关于python:导入文件夹以外的用户创建的模块

Importing a user-made module that's folders away

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How to do relative imports in Python?

所以我尝试包含一个模块,它是我的python文件中的一个文件夹,然后在其中包含多个文件夹。

因此文件夹层次结构如下:

1
2
3
4
5
6
\Folder\
    \Folder\First\
        \Folder\First\myPythonFile.py
    \Folder\Second\
        \Folder\Second\AnotherFolder\
            \Folder\Second\AnotherFolder\addedFile.py

我想将addedfile.py包含到mypythonfile.py中。我不知道这是怎么做到的。


从2.5(可能是2.4)开始,在python中可以进行相对导入。

如果在SecondSecond\AnotherFolder文件夹中添加两个空的__init__.py文件,根据PEP 328,可以写入:

1
 from ..Second.AnotherFolder.addedFile import eggs

myPythonFile.py

导入所需模块(在我的示例中是鸡蛋)

(在文件夹中添加__init__.py文件将其转换为包)

替代方法

如果不想为Second文件夹创建包,可以更改sys.path以包含Second\AnotherFolder文件夹:

1
2
3
4
import sys
import os
sys.path.append(sys.path.append(os.path.abspath('../Second/AnotherFolder')))
import addedFile

但我对这种方法进行了讨论,原因在这里解释。