python - "Mark directory as sources root"到底是做什么的?

标签 python import pycharm

在 Pycharm 中,如果您在项目内的某个文件夹中单击鼠标右键,可以将其标记为 sources root ,因此您可以从此文件夹和子文件夹中导入模块。

然而,这样做只会让你的程序在 Pycharm 中运行,如果我尝试从 Pycharm 外部执行(例如从控制台),它会提示找不到某些模块,这是我面临的问题。

如果我将某个文件夹标记为源根目录,我的程序运行良好,但我需要了解它的作用,以便即使不使用 Pycharm,我也可以配置程序以查找此模块。

我想知道这个选项究竟做了什么,以及如何在不使用它的情况下获得相同的行为。

它只是添加一个 __init__.py根目录下的文件?
它是否在做类似的事情:

import sys
sys.path.insert(0, my_folder)

最佳答案

__init__.py将目录标记为常规包目录(这是 3.3 之前的版本,在 3.3+ 中不再需要)。有了这个,python 将在该目录中查找子模块以进行导入。
“将目录标记为源根目录”为环境设置 PATH(或 PYTHONPATH)。在 shell 中,它会像,

export PYTHONPATH="${PYTHONPATH}:/your/source/root"
PYTHONPATH保存模块文件的默认搜索路径。
这将使解释器能够搜索附加路径中的模块。默认值取决于安装(通常它包含 Python 二进制文件的路径)。
您还可以使用 sys.path 操作此搜索路径。从 python 文件中。

关于python - "Mark directory as sources root"到底是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57360738/

相关文章:

python - 使用 python 创建一个机器人来单击 9 :00am, 10 :00am, 等处的下载按钮

ios - 如何将包 'Storage' 导入到 Swift 项目中?

python - 将 PyCharm 中的项目解释器设置为 Python 3.7 会导致有关 Python 3.5 的虚假代码不兼容消息

macos - PyCharm删除整行光标向上移动

python - numpy float的 "resolution"参数到底是什么

python - 将 UUID 编号列表保存到 python 中的 .csv 文件

database - 升级或迁移后是否有验证数据库模式是否正确的好方法?

php - 尝试将大文件 .txt 导入 MySQL 时出现错误 500

python - 这种链式比较真的可以像 PyCharm 声称的那样简化吗?

python - 在 docker 中部署一个最小的 flask 应用程序 - 服务器连接问题