Python脚本未找到导入的函数

问题描述 投票:0回答:1

我有2个非常简单的python文件。我这样做是为了测试blah2.py在2秒钟的睡眠后是否看到最初声明为None的两个变量的更新版本。文件如下:

blah1.py

from time import sleep
import blah2

movingVariable1 = None
movingVariable2 = None

sleep(2)
movingVariable1 = "sup"
movingVariable2 = "blahhh"
blah2.myFunc()

blah2.py

from blah1 import movingVariable1
from blah1 import movingVariable2

def myFunc():
    global movingVariable1
    global movingVariable2
    print(movingVariable1)
    print(movingVariable2)

虽然我收到以下错误,但我不确定为什么。

 Traceback (most recent call last):
  File "blah1.py", line 2, in <module>
    import blah2
  File "/home/pi/blah2.py", line 1, in <module>
    from blah1 import movingVariable1
  File "/home/pi/blah1.py", line 10, in <module>
    blah2.myFunc()
AttributeError: module 'blah2' has no attribute 'myFunc'

myFunc()显然在blah2.py中被定义为一个函数。谁能在这个基本示例中解释我做错了什么?

python import
1个回答
1
投票

您正在blah2.py中创建循环依赖项>

在您的示例中blah1导入blah2,而blah1依次导入blah1,而blah1将再次导入blah2,依此类推...等等>

为myFunc设置movingVariablemovingVariable2参数,并删除blah2.py中的blah1.py导入。

回复跟进

# blah1.py
from blah1 import movingVariable1
from blah1 import movingVariable2

def myFunc():
    global movingVariable1
    global movingVariable2
    print(movingVariable1)
    print(movingVariable2)
# blah2.py
from time import sleep

movingVariable1 = None
movingVariable2 = None

if __name__ =='__main__':
    import blah2
    sleep(2)
    movingVariable1 = "sup"
    movingVariable2 = "blahhh"
    blah2.myFunc()

如果您这样更改它,它将起作用。因为当blah2导入blah1.py时,它没有看到import blah2,因此__name__将不等于__main__

© www.soinside.com 2019 - 2024. All rights reserved.