0

我在管理 Python 中的模块和打包依赖项时遇到问题。我在 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'

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

4

1 回答 1

1

您创建的结构中有几个错误。

首先,在 python 包中必须__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 文档中的包装

于 2013-10-09T09:44:40.927 回答