【发布时间】:2016-07-15 11:32:09
【问题描述】:
我正在尝试在 Python 中创建一个包含许多需要互操作的子包(我不确定这是否是正确的术语)的包。
我有一个这样的(简化的)结构:
/package
|-script1.py
|-script2.py
|-subpackage1
| |-__init__.py
| |-src
| | |-__init__.py
| | |-my_program.py
| | |-functions.py
| | |-...
|
|-tests
| |-a_tests.py
|-subpackage2
| |-web-server.py
| |-API
| | |-__init__.py
| | |-REST.py
| | |-...
-
package/subpackage2需要能够打电话给package/subpackage1/src/functions.py -
package/tests调用两个子包(使用pytests)。 -
package/subpackage1/src/functions.py需要能够调用subpackage1内的其他模块
我已经看到了这个答案:https://stackoverflow.com/a/33195094 - 它解释了我需要做什么(创建一个包),但它没有解释 如何 去做。
我可以很容易地让两个scripts 调用他们的组件子包:
import subpackage1.src.my_program.py
(即类似于建议here)但随后my_program.py 失败并显示ImportError: No module named 'functions'
那么,我需要什么胶水来设置这个结构?
【问题讨论】:
-
subpackage1必须有一个__init__.py才能被检测为模块。您在src中添加了__init__.py,但在subpackage1中没有添加。 -
@GIRISHRAMNANI - 谢谢。我间歇性地在那里有一个,但不确定是否有必要。有一个在那里似乎并没有改变任何东西。所以需要一些其他的东西来......
标签: python python-3.x import module package