导入文件夹之外的用户制作模块[重复]
Posted
技术标签:
【中文标题】导入文件夹之外的用户制作模块[重复]【英文标题】:Importing a user-made module that's folders away [duplicate] 【发布时间】:2013-01-20 16:25:32 【问题描述】:可能重复:How to do relative imports in Python?
所以我试图包含一个模块,它是我的 python 文件中的一个文件夹,然后是多个文件夹。
所以文件夹层次结构如下:
\Folder\
\Folder\First\
\Folder\First\myPythonFile.py
\Folder\Second\
\Folder\Second\AnotherFolder\
\Folder\Second\AnotherFolder\addedFile.py
我想将 addedFile.py 包含到我的 myPythonFile.py 中。我不确定这是如何实现的。
【问题讨论】:
Second
是 python 包吗?是否应该将其添加到 virtualenv 或您的 PYTHONPATH 以便可以从任何地方访问?
【参考方案1】:
在 Python 2.5(可能是 2.4)中可以使用相对导入
如果在Second
和Second\AnotherFolder
文件夹中添加两个空的__init__.py
文件,根据PEP 328可以这样写:
from ..Second.AnotherFolder.addedFile import eggs
在myPythonFile.py
内
导入所需的模块(在我的示例中 eggs)
(在文件夹中添加__init__.py
文件会将它们转换为包)
替代方法
如果您不想为您的 Second
文件夹创建包,您可以更改 sys.path 以包含您的 Second\AnotherFolder
文件夹:
import sys
import os
sys.path.append(sys.path.append(os.path.abspath('../Second/AnotherFolder')))
import addedFile
但我不赞成这种做法,原因解释here。
【讨论】:
以上是关于导入文件夹之外的用户制作模块[重复]的主要内容,如果未能解决你的问题,请参考以下文章