Python 没有从模块中导入函数
Python not importing functions from module
所以,我有一个类似于此形式的项目:
./
./__init__.py
./main.py
./errorHandle.py
./functions.py
现在,在我的 main.py 我有这个:
import errorHandling
from functions import *
在errorHandle.py中:
from functions import sendMessage
def exceptionHandle(ex,errorCode):
def exceptionHandle(ex,errorCode):
print(ex)
extra = ""
status = 1
if errorCode == constants.ErrorCodes.aws:
constants.awsWorking = 0
if checkConnection() == True:
extra = "A network connection was detected but no connection to AWS was possible. Possibilities include an issue of authentication, renamed/incorrectly named shadow, or a duplicate client name. "
constants.errorsListDelayed[int(time.time())] = [ex,errorCode,extra,constants.TargetConnection.aws]
else:
extra = "No internet connection detected/Google DNS down. "
constants.errorsListDelayed[int(time.time())] = [ex,errorCode,extra,constants.TargetConnection.awsAndMail]
return
elif errorCode == constants.ErrorCodes.loadConfig:
extra = checkIniExists()
elif errorCode == constants.ErrorCodes.camera:
status, extra = checkCameraInitial()
elif errorCode == constants.ErrorCodes.loadImages:
extra= "Couldn't load images. "
else:
extra= "Unknown Error location"
if status == 1:
cv2.destroyAllWindows()
sendErrorMessage(ex,errorCode,extra)
uploadError(ex,errorCode)
(复制后缩进有点乱)
在我的函数中有很多函数,包括前面提到的sendMessage
现在,出于某种原因,虽然我能够导入 errorHandle,none 它的函数,包括 exceptionHandle 函数显示,但它正在导入,因为我可以做这样的事情:
errorHandle.sendMessage(...)
而且它可以正常工作,没有任何实际问题
我也尝试过不同的导入,不同的错误或多或少导致了相同的想法。所以我尝试了:
from errorHandle import exceptionHandle
但这也没有用。
我也试过了
from errorHandle import *
只加载了 sendMessage,我尝试更改 errorHandle 中的代码以将 sendMessage 更改为 *,这加载了所有 functions.py 文件,我尝试从 [=47] 中删除整个导入函数=],没有任何改变。
有点迷失在这里,因为它是导入模块并识别它,而不是模块中的函数。
编辑:
ImportError: cannot import name 'exceptionHandle' from 'errorHandling'
我已确保所有名称都是正确的,而且这些名称中的任何一个都不存在函数,我还尝试了不同的名称以确保它不是由于某个名称而导致的奇怪错误。
您的 functions.py 文件中是否有一个名为 errorHandle
的函数?
请查看我的代码,它是运行。您能否提供一个 minimal reproducible example 以便可以复制 bug/problem。
user@Inspiron:~/code/general/remthisdir$ cat errorHandle.py ;echo;cat functions.py ;echo ;cat main.py
from functions import sendMessage
def exceptionHandle():
print('Inside exceptionHandle')
def sendMessage():
print('Inside sendMessage')
import errorHandle
from functions import *
if __name__ == '__main__':
errorHandle.exceptionHandle()
sendMessage()
user@Inspiron:~/code/general/remthisdir$ python main.py
Inside exceptionHandle
Inside sendMessage
user@Inspiron:~/code/general/remthisdir$
所以,我有一个类似于此形式的项目:
./
./__init__.py
./main.py
./errorHandle.py
./functions.py
现在,在我的 main.py 我有这个:
import errorHandling
from functions import *
在errorHandle.py中:
from functions import sendMessage
def exceptionHandle(ex,errorCode):
def exceptionHandle(ex,errorCode):
print(ex)
extra = ""
status = 1
if errorCode == constants.ErrorCodes.aws:
constants.awsWorking = 0
if checkConnection() == True:
extra = "A network connection was detected but no connection to AWS was possible. Possibilities include an issue of authentication, renamed/incorrectly named shadow, or a duplicate client name. "
constants.errorsListDelayed[int(time.time())] = [ex,errorCode,extra,constants.TargetConnection.aws]
else:
extra = "No internet connection detected/Google DNS down. "
constants.errorsListDelayed[int(time.time())] = [ex,errorCode,extra,constants.TargetConnection.awsAndMail]
return
elif errorCode == constants.ErrorCodes.loadConfig:
extra = checkIniExists()
elif errorCode == constants.ErrorCodes.camera:
status, extra = checkCameraInitial()
elif errorCode == constants.ErrorCodes.loadImages:
extra= "Couldn't load images. "
else:
extra= "Unknown Error location"
if status == 1:
cv2.destroyAllWindows()
sendErrorMessage(ex,errorCode,extra)
uploadError(ex,errorCode)
(复制后缩进有点乱)
在我的函数中有很多函数,包括前面提到的sendMessage
现在,出于某种原因,虽然我能够导入 errorHandle,none 它的函数,包括 exceptionHandle 函数显示,但它正在导入,因为我可以做这样的事情:
errorHandle.sendMessage(...)
而且它可以正常工作,没有任何实际问题
我也尝试过不同的导入,不同的错误或多或少导致了相同的想法。所以我尝试了:
from errorHandle import exceptionHandle
但这也没有用。
我也试过了
from errorHandle import *
只加载了 sendMessage,我尝试更改 errorHandle 中的代码以将 sendMessage 更改为 *,这加载了所有 functions.py 文件,我尝试从 [=47] 中删除整个导入函数=],没有任何改变。
有点迷失在这里,因为它是导入模块并识别它,而不是模块中的函数。
编辑:
ImportError: cannot import name 'exceptionHandle' from 'errorHandling'
我已确保所有名称都是正确的,而且这些名称中的任何一个都不存在函数,我还尝试了不同的名称以确保它不是由于某个名称而导致的奇怪错误。
您的 functions.py 文件中是否有一个名为 errorHandle
的函数?
请查看我的代码,它是运行。您能否提供一个 minimal reproducible example 以便可以复制 bug/problem。
user@Inspiron:~/code/general/remthisdir$ cat errorHandle.py ;echo;cat functions.py ;echo ;cat main.py
from functions import sendMessage
def exceptionHandle():
print('Inside exceptionHandle')
def sendMessage():
print('Inside sendMessage')
import errorHandle
from functions import *
if __name__ == '__main__':
errorHandle.exceptionHandle()
sendMessage()
user@Inspiron:~/code/general/remthisdir$ python main.py
Inside exceptionHandle
Inside sendMessage
user@Inspiron:~/code/general/remthisdir$