“将目录标记为源根目录”到底有什么作用?

Sem*_*aki 9 python import pycharm

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

但是,这样做只会使您的程序可以在 Pycharm 内部运行,如果我尝试从 Pycharm 外部(例如从控制台)执行,它会抱怨找不到某些模块,这就是我面临的问题。

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

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

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

import sys
sys.path.insert(0, my_folder)
Run Code Online (Sandbox Code Playgroud)

Car*_*rot 5

首先__init__.py将目录标记为常规包目录(这是 3.3 之前的版本,在 3.3+ 中不再需要)。有了这个,python 将在该目录中查找子模块以进行导入。

“将目录标记为源根目录”为环境设置 PATH(或 PYTHONPATH)。在 shell 中,它会像,

export PYTHONPATH="${PYTHONPATH}:/your/source/root"
Run Code Online (Sandbox Code Playgroud)

PYTHONPATH保存模块文件的默认搜索路径。这将使解释器能够搜索附加路径中的模块。默认值取决于安装(通常它包含 Python 二进制文件的路径)。

您还可以sys.path从 python 文件内部使用此搜索路径。