Python模块导入3.7

时间:2018-12-07 14:32:10

标签: python python-3.x python-import

嘿,我有一个树结构,每个目录/子目录中都有一个空的 init .py。但是,从主目录.py文件加载模块实用程序失败。

使用python 3.7

我的树如下所示:

    C:.
├───Tests
│   ├───Checkout
│   ├───GlobalFooter
│   ├───GlobalHeader
│   │   └───__pycache__
│   ├───Home
│   │   └───__pycache__
│   ├───MyAccount
│   ├───ProductDetail
│   ├───ProductResults
│   │   └───__pycache__
│   └───SignIn
└───Utilities
    └───__pycache__

我尝试了以下方法:

sys.path.insert(0, 'C:/Web2/TSC.WebFactory.Web2.Tests/Utilities')
from Utilities.utils import addCookies, configureOptions

2 个答案:

答案 0 :(得分:2)

如果要通过模块的包限定名称访问模块的整个树,则不应在Utilities条目中包含sys.pathfrom Utilities.utils import ...假设sys.path中的某个文件夹具有名为Utilities的程序包/文件夹,其中包含名为utils的子程序包/文件夹或名为{{1}的子模块/文件。 };通过将utils.py添加到'C:/Web2/TSC.WebFactory.Web2.Tests/Utilities',可以期望sys.path(注意,将'C:/Web2/TSC.WebFactory.Web2.Tests/Utilities/Utilities/utils.py'翻倍)。

这里的解决方案是从路径中删除该最终目录:

Utilities

现在sys.path.insert(0, 'C:/Web2/TSC.WebFactory.Web2.Tests') 将在from Utilities.utils import ...中查找C:\Web2\TSC.WebFactory.Web2.Tests,并按预期找到它。

旁注:如果要保留Windows标准反斜杠作为目录分隔符,则可以通过将路径设置为原始字符串文字,从而避免使用常量转义符,从而相当干净地使用它们:

Utilities\utils.py

答案 1 :(得分:0)

如果您还没有尝试过,请像执行sys.path.insert一样执行此操作,而不必在导入行上指定文件夹。

from utils import addCookies, configureOptions