我在管理模块时遇到问题,并且在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'
我的包/模块结构是否正确?为什么我会收到该错误?
答案 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()
中包装的更多信息