首页 > 解决方案 > Python:我如何从一个更高的目录导入变量?

问题描述

如何从 python 中的更高级别目录导入?

例如,我有:

/var/www/PROJECT/subproject/_common.py 
/var/www/PROJECT/subproject/stuff/routes.py

我想将变量导入A_common.pyroutes.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'

标签: pythonimporterror

解决方案


旧版

要解决此问题,请替换".."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上搜索


推荐阅读