我无法从config/__init__.py
文件中导入变量。
我的目录如下:
.
├── src
│ ├── config
│ │ ├── __init__.py
│ │ ├── base_config.py
│ │ ├── log_config.py
│ │ └── output_config.py
│ ├── script.py
在__init__.py
我有from config.output_config import output_data
。该文件还包含一行BUCKET = ...
在我的output_config.py
文件from config import BUCKET
中,函数中使用了它们output_data()
。
在script.py
我有import config
一个电话config.output_data()
当我运行script.py时,出现以下错误:
Traceback (most recent call last):
File ".../src/config/output_config.py", line 15, in <module>
from config import BUCKET
File ".../src/config/__init__.py", line 7, in <module>
from config.output_config import output_data
File ".../src/config/output_config.py", line 15, in <module>
from config import BUCKET
ImportError: cannot import name 'BUCKET'
看来我的问题可能是在污染名称空间(并进行循环引用。),但是我不确定如何解决该问题。据我了解,该__init__.py
文件最适合用于导入其他配置文件,但是我不确定如何将变量BUCKET
放入output_config.py
需要的位置。希望能帮助您解决问题并了解与导入相关的项目结构最佳实践。谢谢!
我要说的是,将变量BUCKET设置为其他python文件或settings.py,如果它是设置或常量,则因为它是循环导入。
评论更新:
创建一个settings.py
或constants.py
文件,然后将设置/常量放在此处,然后尝试避免进行任何导入,__init__.py
除非它是标准库导入,以避免对导入进行任何潜在的循环引用。
要记住的一件事是,__init__.py
每当导入该包中的任何模块时,都会加载您放入的任何内容,因此您需要注意放置在其中的内容并尽量使其简短。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句