Python 模块导入 3.7
Python Module import 3.7
嘿,我有一个树结构,每个 directory/subdirectory 中都有一个空的 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
如果您还没有尝试过,请像执行 sys.path.insert 时一样执行此操作,您不必在导入行中指定文件夹。
from utils import addCookies, configureOptions
如果您想通过包限定名称访问整个模块树,则不应在 sys.path
条目中包含 Utilities
; from Utilities.utils import ...
假定 sys.path
中的某个文件夹有一个名为 Utilities
的 package/folder,其中包含一个名为 utils
的子 package/folder 或一个 submodule/file 命名为 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
中查找 Utilities\utils.py
并按预期找到它。
旁注:如果你想保持 Windows 标准反斜杠作为目录分隔符,你可以通过将路径设为原始字符串文字来相当干净地使用它们,避免不断转义的需要:
sys.path.insert(0, r'C:\Web2\TSC.WebFactory.Web2.Tests')
嘿,我有一个树结构,每个 directory/subdirectory 中都有一个空的 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
如果您还没有尝试过,请像执行 sys.path.insert 时一样执行此操作,您不必在导入行中指定文件夹。
from utils import addCookies, configureOptions
如果您想通过包限定名称访问整个模块树,则不应在 sys.path
条目中包含 Utilities
; from Utilities.utils import ...
假定 sys.path
中的某个文件夹有一个名为 Utilities
的 package/folder,其中包含一个名为 utils
的子 package/folder 或一个 submodule/file 命名为 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
中查找 Utilities\utils.py
并按预期找到它。
旁注:如果你想保持 Windows 标准反斜杠作为目录分隔符,你可以通过将路径设为原始字符串文字来相当干净地使用它们,避免不断转义的需要:
sys.path.insert(0, r'C:\Web2\TSC.WebFactory.Web2.Tests')