从兄弟目录导入模块有很多线程,大多数人建议只需将 init .py添加到源代码树,或者从这些init文件中修改sys.path。 / p>
假设我有以下项目结构:
project_root/
__init__.py
wrappers/
__init__.py
wrapper1.py
wrapper2.py
samples/
__init__.py
sample1.py
sample2.py
所有 init .py文件都包含将project_root /目录的绝对路径插入sys.path的代码。无论我如何将wrapperX模块导入sampleX,我都会得到“No module names x”。当我尝试从sampleX打印sys.path时,它似乎不包含project_root的路径。
那么如何正确使用 init .py来设置项目环境变量?
答案 0 :(得分:1)
不要直接运行sampleX.py
,而是以模块执行:
# (in project root directory)
python -m samples.sample1
这样你根本不需要摆弄sys.path
(通常不鼓励)。它还使得稍后将样本/包用作库变得更加容易。
哦,并且 init .py未运行,因为它只会导入示例包,而不是运行单个文件时才会运行/导入(这或多或少是相同的)作为脚本。