在Pycharm中,如果右键单击项目内部的文件夹,则可以将其标记为sources root
,这样便可以从该文件夹和子文件夹导入模块。
但是,这样做只会使程序在Pycharm内部可运行,如果我尝试从Pycharm外部执行(例如从控制台),它将抱怨找不到某些模块,这就是我面临的问题
如果我将某个文件夹标记为源根目录,则我的程序可以正常运行,但是我需要了解它的作用,因此即使不使用Pycharm,也可以将程序配置为查找此模块。
我想知道此选项的确切作用,以及如何在不使用它的情况下获得相同的行为。
是否只是在根文件夹中添加了__init__.py
文件?
它在做类似的事情吗?
import sys
sys.path.insert(0, my_folder)
答案 0 :(得分:4)
第一个__init__.py
将目录标记为常规软件包目录(这是3.3之前的版本,在3.3+中不再需要)。这样,python将在该目录中寻找要导入的子模块。
“将目录标记为源根目录”为环境设置PATH(或PYTHONPATH)。在外壳中,就像
export PYTHONPATH="${PYTHONPATH}:/your/source/root"
PYTHONPATH
保留了模块文件的默认搜索路径。
这将使解释器能够在附加路径中搜索模块。默认值取决于安装(通常它包含Python二进制文件的路径)。
您还可以在Python文件中使用sys.path
来操纵此搜索路径。