python - Python:我如何从一个更高的目录导入变量?
问题描述
如何从 python 中的更高级别目录导入?
例如,我有:
/var/www/PROJECT/subproject/_common.py
/var/www/PROJECT/subproject/stuff/routes.py
我想将变量导入A
到_common.py
routes.py
# routes.py
import os, sys
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
from _common import A
但我得到了错误:
ImportError:cannot import name 'A'
解决方案
旧版
要解决此问题,请替换".."
为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上搜索
推荐阅读
- javascript - Mapbox GL JS 在一定的缩放/距离后不渲染图层
- reactjs - Docker:npm run start 导致错误,EACCES:权限被拒绝,打开 '/home/node/node_modules/.cache/.eslintcache
- flutter - Flutter:构建运行器引发预编译错误
- marklogic - 如何在 gradle 中读取 xqy 文件的内容并将其作为字符串值传递给 gradle 任务?
- python - 错误:- 解包的值太多(预期为 2)python 函数
- android - 不能嵌套Relativelayout吗?
- excel - 在 VBA 中使用 xLookUp 返回值的范围
- javascript - 在反应中映射数组的空检查
- java - 如何在 Wso2 ei 中编写自定义调解器以将列表有效负载的 json 列表转换为单个列表
- python - 如何在 Django 中创建两个小时之间的时隙间隔