我一直在努力实现Python包导入。我在网上搜索,但找不到合适的答案。在
我有以下目录结构:
.
./__init__.py
./packages/
./packages/__init__.py
./packages/package
./packages/package/__init__.py
./packages/package/module.py
在模块.py源仅包含一行:
^{pr2}$如果我转到“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
我需要在u init_uuy.py文件中放入什么,以便可以进行上述导入? 另外,我还需要在./\uu init_uuy.py文件中放入什么,以便能够从../目录导入我的项目?
如果可能的话,我想在不改变系统路径变量。在
为了使
import package
在模块.py要成功,python包package
必须是可发现的。这意味着它必须在PYTHONPATH
上。默认情况下,此路径包括site-packages
(python包与easy_install
或pip
放在一起的目录)。此外,PYTHONPATH还包括当前的工作目录。如果您在}将被放在PYTHONPATH的开头。该目录不包含名为
.
,那么{package
的python包,因此import package
失败。您可以在启动python解释器之前移动到
./packages
,也可以安装包。要完成后者,您需要一个设置.py从运行程序时。所有导入都必须与该目录相关。为了你模块.py这意味着你必须
而不是
^{pr2}$这是因为python将使用。作为您在程序中执行的所有导入的基础。如果没有很多魔法,就不可能从父目录中导入某些内容,因此您必须执行如上所示的绝对导入。
相关问题 更多 >
编程相关推荐