我正在尝试重构我的代码(一堆核心模块和一些位于公共目录中的应用程序)。我想得到这个结构
Root
__init__.py
Core
__init__.py
a.py
b.py
c.py
AppOne
__init__.py
AppOne.py
AppTwo
__init__.py
AppTwo.py
AppThree
__init__.py
AppThree.py
Run Code Online (Sandbox Code Playgroud)
其中AppOne.py,AppTwo.py并导入包中的AppThree.py模块a,b和。cCore
我不明白如何编写__init__.py文件和导入语句。我已阅读
http://docs.python.org/tutorial/modules.html和http://guide.python-distribute.org/creation.html。我收到诸如“尝试在非包中进行相对导入”或“无效的 Sintaxis”之类的错误
您需要将 python 模块的目录添加到 sys 路径。
如果你有这样的事情
Root
here_using_my_module.py
my_module
__init__.py --> leave it empty
a.py
b.py
c.py
Run Code Online (Sandbox Code Playgroud)
您需要将模块目录添加到 sys_path
//here_using_your_module.py
import os, sys
abspath = lambda *p: os.path.abspath(os.path.join(*p))
PROJECT_ROOT = abspath(os.path.dirname(__file__))
sys.path.insert(0,PROJECT_ROOT)
import a from my_module
a.do_something()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1742 次 |
| 最近记录: |