Python中的包组织

时间:2013-10-09 09:29:34

标签: python

我在管理模块时遇到问题,并且在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'

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

1 个答案:

答案 0 :(得分:1)

您创建的结构中存在多个错误。

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

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

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

/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 docs

中包装的更多信息