通过__init__.py扩展sys.path

时间:2016-08-04 05:15:44

标签: python

从兄弟目录导入模块有很多线程,大多数人建议只需将 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来设置项目环境变量?

1 个答案:

答案 0 :(得分:1)

不要直接运行sampleX.py,而是以模块执行:

# (in project root directory)
python -m samples.sample1

这样你根本不需要摆弄sys.path(通常不鼓励)。它还使得稍后将样本/包用作库变得更加容易。

哦,并且 init .py未运行,因为它只会导入示例包,而不是运行单个文件时才会运行/导入(这或多或少是相同的)作为脚本。