“将目录标记为源根目录”的真正作用是什么?

时间:2019-08-05 14:32:36

标签: python import pycharm

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

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

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

我想知道此选项的确切作用,以及如何在不使用它的情况下获得相同的行为。

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

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

1 个答案:

答案 0 :(得分:4)

第一个__init__.py将目录标记为常规软件包目录(这是3.3之前的版本,在3.3+中不再需要)。这样,python将在该目录中寻找要导入的子模块。

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

export PYTHONPATH="${PYTHONPATH}:/your/source/root"

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

您还可以在Python文件中使用sys.path来操纵此搜索路径。