others - 在 python 中,软件包组织

  显示原文与译文双语对照的内容
86 2

我在 python 中管理模块和pacakges依赖项时遇到问题。 我在 Windows 7,使用 python 3.3我想有一个基本的结构如下:


/
myTask.py
-->utils
 --> utils1.py
 --> utils2.py
-->processes
 --> process1.py
 --> process2.py

MyTask将运行 Process1.Process1导入process2并导入utils包中的utils1和 utils2

所以在process1里


import sys
sys.path.append('..path..utils')
from utils1 import *
from utils2 import *
from process2 import *

if __name__ == '__main__': 
 my_method()

def my_method():
 ####CODE

我可以运行Process1作为脚本,工作正常。 MyTask.py 看起来像:


import processes.process1
process1.my_method()

当我运行它时,接收到错误消息,并指出:


 ImportError: No module named 'process2'

我的包/模块结构是否正确? 为什么我收到这个错误?

时间: 原作者:

145 2

你创建的结构中存在几个错误。

首先,在 python 包中必须包含 __init__.py 文件,它是 root 。 它是普通的python 文件,可能完全空了。 需要将文件夹标记为 python 包

接下来,你不应该使用 sys.path excplicitly,特别是使用相对路径( 除非你确定自己在做什么但这次你绝对不会) 。

因此,正确的文件夹结构是


/MyTask.py
/processes
 __init__.py
 process1.py
 process2.py
/utils
 __init__.py
 utils1.py
 utils2.py

process1.py:


from utils import utils1, utils2 # relative import
import process2 # import from same package

# everything else

MyTask.py:


import processes.process1
process1.my_method()

更多关于 python 文档包的软件包。

原作者:
...