我有以下目录结构:
mydir/
MyTask1/
job1.py
MyPackage/
__init__.py
cool_code.py
MyTask1_1/
job2.py
MyTask3/
job3.py
我创建的包名为MyPackage
,__init__.py
只包含文档字符串。
我想要做的是来自job2.py
和job3.py
,我可以通过以下方式调用模块
# job2.py or job3.py
#!/usr/bin/python
from MyPackage import cool_code
我应该修改和添加什么才能实现?
答案 0 :(得分:1)
您可以修改sys.path以扩展模块搜索路径,例如
import sys
sys.path.insert(0,'/path/to/mydir/MyTask1')
from MyPackage import cool_code
答案 1 :(得分:0)
来自job2.py:
PROJ_ROOT = os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))
if not PROJ_ROOT in sys.path:
sys.path.append(PROJ_ROOT)
from mydir.MyTask1.MyPackage import cool_code
来自job3.py:
PROJ_ROOT = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
if not PROJ_ROOT in sys.path:
sys.path.append(PROJ_ROOT)
from mydir.MyTask3 import cool_code
答案 2 :(得分:0)
您可以定义相对于__init__.py
的模块路径并定义模块结构。您可以在此处找到示例:https://docs.python.org/2/tutorial/modules.html#packages
如果您想加载时间:
from MyPackage import cool_code
您可以在此处定义的__all__
中使用__init__.py
:https://docs.python.org/2/tutorial/modules.html#importing-from-a-package