如何从python中的更高级别目录导入?例如,我有:/var/www/PROJECT/subproject/_common.py /var/www/PROJECT/subproject/stuff/routes.py我想导入的变量A在_common.py以routes.py# routes.pyimport os, sys sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))from _common import A但我收到错误:ImportError:cannot import name 'A'
2 回答

至尊宝的传说
TA贡献1789条经验 获得超10个赞
旧版本
要解决此问题,请替换".."为os.pardir:
import os, sys
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir)))
from _common import A
新版本
上面的代码没有解决问题中的问题,因为真正的问题在于项目结构而不是特定行。问题是循环导入。提供完整的回溯后,问题变得清晰。这是重现问题的简单方法 - 考虑 3 个文件...
主要.py:
import a
一个.py:
import b
A = 'A'
b.py:
from a import A
...错误是:
ImportError: cannot import name 'A'
或
b.py:
import a
BB = a.A
...错误是:
AttributeError: module 'a' has no attribute 'A'
问题的解决方法已经讨论过很多次了——在SO上搜索

慕盖茨4494581
TA贡献1850条经验 获得超11个赞
更改文件目录:
import os, sys
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__),"../../project")))
from _common import A
添加回答
举报
0/150
提交
取消