在Pycharm中,如果您右键单击项目中的文件夹,则可以将其标记为sources root
,这样您就可以从此文件夹和子文件夹中导入模块。
然而,这样做只会让你的程序在Pycharm内部运行,如果我试图从Pycharm外部(例如从控制台)执行,它会抱怨找不到某些模块,这就是我面临的问题。
如果我将某个文件夹标记为源代码根目录,我的程序运行得很好,但我需要了解它是做什么的,这样我就可以配置程序来找到这个模块,即使不使用Pycharm。
我想知道这个选项到底做了什么,以及如何在不使用它的情况下获得相同的行为。
它只是在根文件夹中添加一个__init__.py
文件?它是不是在做这样的事情:
import sys
sys.path.insert(0, my_folder)
发布于 2020-09-09 20:09:56
首先,__init__.py
将一个目录标记为常规的软件包目录(这是3.3版本之前的版本,在3.3+中不再需要)。这样,python将在该目录中查找要导入的子模块。
"Mark directory as source root“设置环境的路径(或PYTHONPATH)。在外壳中,它会像这样,
export PYTHONPATH="${PYTHONPATH}:/your/source/root"
PYTHONPATH
保存模块文件的默认搜索路径。这将使解释器能够在附加的路径中搜索模块。默认值依赖于安装(通常它包含Python二进制文件的路径)。
您还可以在python文件中使用sys.path
操作此搜索路径。
https://stackoverflow.com/questions/57360738
复制相似问题