我为另一个__init__.py
问题道歉。
我有以下包结构:
+contrib
+--__init__.py
|
+database
+--__init__.py
|
+--connection.py
在顶级__init__.py
我定义:USER='me'
。如果我从命令行import contrib
,那么我可以访问contrib.USER
。
现在,我想从withih contrib.user
访问connection.py
,但我不能这样做。
当我发出__init__.py
时会调用顶级from contrib.database import connection
,因此Python实际上是在创建参数USER
。
所以问题是:如何从 children 中访问顶级__init__.py
中声明的参数和变量。
谢谢。
编辑:
我意识到您可以将import contrib
添加到connection.py
,但它似乎是重复的,因为很明显(错误的是这样?)如果您需要connection.py
,您已导入{{1} }}
答案 0 :(得分:13)
将import contrib
添加到connection.py
是可行的方法。是的,contrib
模块已经导入(您可以从sys.modules
找到)。问题是您的connection.py代码中没有对模块的引用。进行另一次导入将为您提供参考。您无需担心额外的加载时间,因为模块已经加载。
答案 1 :(得分:0)
您需要在contrib
中导入connection
。使用相对导入(..contrib
)或绝对导入。