我总是在 Python 包导入方面遇到困难。我在网上搜索,但找不到合适的答案。
我有以下目录结构:
.
./__init__.py
./packages/
./packages/__init__.py
./packages/package
./packages/package/__init__.py
./packages/package/module.py
module.py 源仅包含一行:
import package
如果我进入“packages”目录,我可以导入包:
>>> import python
>>>
如果我转到“.”目录中,我想导入模块(或包)如下:
>>> import packages.package.module as module
但我收到错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "vendor/package/module.py", line 1, in <module>
import package
ImportError: No module named package
我需要在 __init__.py 文件中放入什么,才能执行上述导入? 更多,我需要在 ./__init__.py 文件中放入什么,以便我能够从 ../目录导入我的项目?
如果可能的话,我想在不更改 sys.path 变量的情况下解决这个问题。
最佳答案
为了使 module.py 中的 import package
成功,python 包 package
必须是可发现的。这意味着它必须位于 PYTHONPATH
上。默认情况下,此路径包括 site-packages
(使用 easy_install
或 pip
放置 python 包的目录)。此外,PYTHONPATH 还包括当前工作目录。
如果您位于 .
中,则 .
会放置在 PYTHONPATH 的开头。该目录不包含名为package
的Python包,因此导入包
失败。
您可以在启动 python 解释器之前移至 ./packages
,也可以安装您的软件包。要执行后者,您需要一个 setup.py
关于Python包导入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13376251/