GIS*_*han 5 python import module package python-3.x
我正在尝试在 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
| | |-...
Run Code Online (Sandbox Code Playgroud)
package/subpackage2 需要能够调用 package/subpackage1/src/functions.pypackage/tests调用两个子包(使用pytests)。package/subpackage1/src/functions.py 需要能够调用内部的其他模块 subpackage1我已经看到了这个答案:https : //stackoverflow.com/a/33195094 - 它解释了我需要做什么(创建一个包),但它没有解释如何去做。
我可以很容易地让两者scripts使用以下方法调用它们的组件子包:
import subpackage1.src.my_program.py
(即类似于此处的建议)但随后my_program.py失败并显示ImportError: No module named 'functions'
那么,我需要什么胶水来设置这个结构?
所以为了解决这个问题我创建了一个类似的文件夹结构
/package
|-script1.py
|-subpackage1
| |-__init__.py
| |-src
| | |-__init__.py
| | |-functions.py
Run Code Online (Sandbox Code Playgroud)
我的 script1.py 文件有
import subpackage1
import subpackage1.src
import subpackage1.src.functions as f
print(f.hello())
Run Code Online (Sandbox Code Playgroud)
我的functions.py文件有
def hello():
return "from the functions"
Run Code Online (Sandbox Code Playgroud)
现在从package文件夹中
我做到了
$ python script1.py
脚本运行并输出
from the functions
显示。
我在用python3
那么我是否错过了一些东西,因为它在我的系统上运行。
注意:我添加了三个不同的imports来检查那里的导入错误。
| 归档时间: |
|
| 查看次数: |
7241 次 |
| 最近记录: |