Python ImportError:无法从';导入名称__主&';
变量Python ImportError:无法从';导入名称__主&';,python,import,Python,Import,变量isDevelopment位于manager/\uuuuu init\uuuuuuu.py文件中: isDevelopment = True 在同一目录中,文件fusion.py尝试在文件级别导入它: from . import isDevelopment 注意:pycharm与之矛盾:在任何情况下都不会标记导入: 当试图从其他位置导入时,例如。pycharm会抱怨: 跑步时 python3 manager/fusion.py 发生以下情况: ImportError: can
isDevelopment
位于manager/\uuuuu init\uuuuuuu.py
文件中:
isDevelopment = True
在同一目录中,文件fusion.py
尝试在文件级别导入它:
from . import isDevelopment
注意:pycharm
与之矛盾:在任何情况下都不会标记导入:
当试图从其他位置导入时,例如。
pycharm会抱怨:
跑步时
python3 manager/fusion.py
发生以下情况:
ImportError: cannot import name 'isDevelopment' from '__main__'
根据其中一项建议进行另一次尝试:
from ..manager import isDevelopment
这导致:
ValueError: attempted relative import beyond top-level package
为什么尝试导入的
无效?需要更改的内容是什么?\uuuuu init\uuuuuuupy
用于初始化包。根据
包的用户可以从包中导入单个模块
您不需要导入\uuuu init\uuuuuy.py
中的内容,它会在您进行导入时自动运行
在最简单的情况下,init.py可以只是一个空文件,但它也可以为包执行初始化代码
由于isDevelopment
不是模块,您无法导入它!如果您有另一个模块fusion2.py
,则可以使用
from . import fusion2
在那里你应该可以看到isDevelopment
./test.py
./manager/__init__.py
./manager/fusion.py
__初始值
/经理/fusion.py
/test.py
执行
输出
问题:
您正在尝试执行manager/fusion.py来设置模块,还是希望它成为可执行应用程序的一部分?如果您只是想知道manager模块中isDevelopment的价值,那么这是可以实现的。如果希望manager中包含可执行函数,请使用setup.py来探索入口点。您是否尝试过my_package import isDevelopment中的或..my_package import isDevelopment中的question@GreenCloakGuyfrom..manager导入是开发值错误:尝试了相对导入超越顶级软件包
@Kristian np:我刚刚依次删除了我的。谢谢你的期待!如果只是删除了该导入:NameError:name'isDevelopment'未定义
也pycharm
将其标记为红色此代码库中的许多地方都有导入的变量:您能进一步解释吗?init.py中的变量?你可能应该首先展开你的问题。回答一些我们无法看到和评估的问题是复杂的。但是从我看来,你没有从init.py导入变量。我没有把\uuu init\uuuuuuuuuuuuuuuuuuuuuuuupy
作为不同的地方:会再次检查我是否在其他地方使用它的变量。根据这个你应该能够把它们放在
感谢您的调查:仍然不确定我的模块内部发生了什么,因此它在那里不起作用:但您已经确定了它在一般情况下应该起作用。我可能会尽快获奖。。希望在某个时刻发生什么。我现在放弃了,把它变成了一个模块局部变量
isDevelopment = True
from . import isDevelopment
def checkDevelopment():
print("isDevelopment = {0}".format(isDevelopment))
import manager
if __name__ == "__main__":
print("isDevelopment = {0}".format(manager.isDevelopment))
manager.checkDevelopment()
python3 ./test.py
isDevelopment = True
isDevelopment = True