如何编写Python包

Dan*_*rns 5 python

我正在尝试重构我的代码(一堆核心模块和一些位于公共目录中的应用程序)。我想得到这个结构

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.htmlhttp://guide.python-distribute.org/creation.html。我收到诸如“尝试在非包中进行相对导入”或“无效的 Sintaxis”之类的错误

Sar*_*ngh 5

您需要将 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)