基本上我问这个人的问题是同一个问题:How to do relative imports in Python?
但没有人给他一个正确答案。鉴于你在一个子文件夹中,你想要上一个目录,然后进入另一个子文件夹,做他们建议的不起作用(正如OP在他的评论中指出的那样)。
我知道你可以使用sys.path来做到这一点,但我更喜欢一种更干净的方法。
示例:
App
__init__.py
Package_A
--__init__.py
--Module_A.py
Package_B
--__init__.py
--Module_B.py
如何将Module_A导入Module_B?
答案 0 :(得分:11)
main.py
setup.py
app/ ->
__init__.py
package_a/ ->
__init__.py
module_a.py
package_b/ ->
__init__.py
module_b.py
python main.py
。main.py
:import app.package_a.module_a
module_a.py
执行import app.package_b.module_b
或者2或3可以使用:from app.package_a import module_a
只要你的PYTHONPATH中有app
,那就行了。 main.py
可以在任何地方。
所以你写一个setup.py
来将整个app包和子包复制(安装)到目标系统的python文件夹,并main.py
来定位系统的脚本文件夹。
答案 1 :(得分:2)
如果我是reading correctly,请使用Python 2.5或更高版本:
from ..Module_B import Module_B
我以为我精通Python,但我不知道在2.5版本中是否可行。
答案 2 :(得分:0)
如果您随后将Module_B导入App,则
Module_B.py: 导入ModuleA
App.py(也导入ModuleA,现在默认情况下在Python路径中)
import Module_B.Module_B
另一种方法是将__init__.py(Module_A / App文件夹中的那个)更新为:
import os
import sys
sys.path.extend('%s../' % os.getcwd())
import ModuleA
另一种方法是将您的文件夹添加到PYTHONPATH环境var。