gpt4 book ai didi

Python,从同一模块导入: ImportError: cannot import name 'blah' , __name__ == '__main__'

转载 作者:行者123 更新时间:2023-12-01 00:49:28 24 4
gpt4 key购买 nike

很容易复制问题。我当前的设置是:

package/
__init__.py
run.py

在我的 __init.py__ 中,我有:

blah = 4

在我的 run.py 中,我有:

from package import blah


if __name__ == '__main__':
print(blah)

我只是使用python run.py运行它。但我收到 ImportError: Cannot import name 'blah'.

为什么我无法从包中导入变量?我知道如何解决它,我很想知道错误的原因。

最佳答案

您显然试图将其作为包执行,但您正在运行“run.py”,就好像它是标准 python 脚本一样。从您尝试运行它的方式来看,run.py 没有 module 的概念。您需要在这里重新构建您的设计。包中的 module run.py 将是一个模块(这些是您的命名约定)。所以 module 是包,run.py 是一个模块。然后,您需要一个 __main__.py 来将其作为包执行,并且您需要更改 run.py:

run.py:

#!/usr/bin/env python3

from module1 import blah

def run():
print(blah)

__main__.py:

#!/usr/bin/env python3
from module1 import run

def main():
run.run() # run is the module name, and run is also the function name so we execute with run.run

main()

__init__.py:

blah = 4

目录结构:

模块1/ - __init__.py - __main__.py - run.py

执行(在module1之外):

[dkennetz@nodem103  fun]$ python3.5 -m module1
4

如果您不想将其设为包,则只需创建一个名为 package 的目录,并在其中创建 run.py 变量。 py.

变量.py:

blah=4
blahblah=8
blahblahblah=12

运行.py:

from variables import blah
print(blah)

打印4

如果您将 run.py 更改为:

from variables import blah, blahblah

print(blah)
print(blahblah)

[dkennetz@nodem103 package]$ python3.5 run.py
4
8

或者您可以通过将 run.py 更改为导入所有变量:

from variables import *
print(blah)
print(blahblah)
print(blahblahblah) # if this was added to variables.py as 12

它返回:

[dkennetz@nodem103  package]$ python3.5 run.py
4
8
12

关于Python,从同一模块导入: ImportError: cannot import name 'blah' , __name__ == '__main__',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56687346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com