Python 导入祖先模块

Python 导入祖先模块,python,Python,我的目录结构如下: 在src文件夹中,我有一个名为util.py的模块 在src/dir1/dir2中,我有另一个名为client.py的模块 我需要在client.py中导入util.py 我在stackoverflow中看到了关于此主题的不同问题,我尝试了不同的案例: (相对路径)在我尝试执行的client.py文件夹的init.py中 from ... import util 但它给了我输入错误 (绝对路径)在同一个init.py中,我尝试了: import src.util 但它给了

我的目录结构如下:

在src文件夹中,我有一个名为util.py的模块 在src/dir1/dir2中,我有另一个名为client.py的模块

我需要在client.py中导入util.py

我在stackoverflow中看到了关于此主题的不同问题,我尝试了不同的案例:

(相对路径)在我尝试执行的client.py文件夹的init.py中

from ... import util
但它给了我输入错误

(绝对路径)在同一个init.py中,我尝试了:

import src.util
但它给了我同样的错误(导入错误)

我需要一种不会导致py2exe出现问题的方法,因为我以后需要它

谢谢你的回答


我忘了提到我正在使用python2.7.1。首先,将所有文件放在同一文件夹中。 从这里,您可以说From….util.py import util 或从…util.py导入*

如果您只是说import util.py,那么无论何时调用任何东西,都必须说util.(在此处插入函数)

此外,如果绝对目录不在同一文件夹中,则需要绝对目录。从C:/documents and settings/desktop(etc)util.py导入util

修正案:

关于第二部分。我建议你:
从src/dir1/util.py import util中,我通常执行以下操作

import sys
sys.path.append('../..') #assure that src directory is in sys.path
import util

您需要从src文件夹和包含要导入的文件的每个子文件夹中添加
\uuuu init\uuuu.py
。您还需要确保src在PYTHONPATH中

假设client.py在您的src文件夹中,util.py在src/dir1/dir2中(此路径中的每个目录都有一个
\uuu init\uuuu.py
),请记住,您可以从客户端导入util,如下所示:

import dir1.dir2.util
\uuuu init\uuuu.py
文件可以为空

您的src目录结构最终将如下所示(根据示例):


我不想把所有的文件都放在同一个文件夹中。接下来的两段将把它放在不同的文件夹中。首先要查找的两件事是,PYTHONPATH中的
src
文件夹,您是否有
\u init\u.py
文件?是的,src在PYTHONPATH中,我有init.py文件,你有
\uuuu init\uuuuu.py
文件,带有双底字符,对吗?从src运行
python
并尝试导入util,它应该可以工作。这似乎是正确的方法,但我无法让它工作。我做错事了。您是否将这些代码行放在init.py中?对于导入util,您在client.py中使用了什么?场景是反转。client.py在src/dir1/dir2中,util.py在src中。我想在client.py中导入util.py。
src/
|-- client.py
|-- dir1
|   |-- dir2
|   |   |-- __init__.py
|   |   `-- unit.py
|   `-- __init__.py
`-- __init__.py