为了账号安全,请及时绑定邮箱和手机立即绑定

Python:如何从更高的目录导入变量?

Python:如何从更高的目录导入变量?

白板的微信 2021-08-24 15:33:00
如何从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上搜索


查看完整回答
反对 回复 2021-08-24
?
慕盖茨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


查看完整回答
反对 回复 2021-08-24
  • 2 回答
  • 0 关注
  • 179 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号