Python无法从未定义的其他文件名导入
我正试图从另一个python文件导入自定义函数,但不断收到一个错误Python无法从未定义的其他文件名导入,python,python-3.x,Python,Python 3.x,我正试图从另一个python文件导入自定义函数,但不断收到一个错误NameError:name'testme'未定义。我确认我正在根据和正确导入文件。我还能做些什么来解决这个问题 我的主要python文件是: import sys import dbconn #from dbconn import testme #<----did not work dev=True if(dev): categId='528' pollIds=[529,530,531] else:
NameError:name'testme'未定义
。我确认我正在根据和正确导入文件。我还能做些什么来解决这个问题
我的主要python文件是:
import sys
import dbconn
#from dbconn import testme #<----did not work
dev=True
if(dev):
categId='528'
pollIds=[529,530,531]
else:
categId=str(sys.argv[1])
pollIds=[529,530,531]
df=testme(categIds)#callServer(categId,pollIds)
df
if(not categId.isdigit):
print('categ id fail. expected digit got: '+categId)
.....
我不确定这是否有什么不同,但我正在Jupyter笔记本中运行主python文件,并且在同一目录中有一个dbconn.py的编译版本
针对我尝试过的建议:
df=dbconn.testme(categIds)
获取错误信息:
模块“dbconn”没有属性“testme”
您必须遵循以下步骤
1)import <package>
2)import <module>
3)from <package> import <module or subpackage or object>
4)from <module> import <object>
您只需在from
部分中使用软件包
,在导入
部分中使用模块
喜欢>>
必须是
dbconn.testme(…
。从dbconn导入testme
使用时会发生什么?如果将df=testme(categIds)
更改为df=dbconn.testme(categIds)
,会发生什么?最后,如果运行import importlib;importlib.reload(dbconn),它会工作吗
?您自己的模块与您正在使用的模块完全相同,如pandas和pymysql。因此,当您导入dbconn
时,您在名称空间中得到的唯一东西就是dbconn
模块本身,因此您必须执行dbconn.testme
与您必须执行的pd.DataFrame
完全相同。如果您从dbconn导入rt testme
,你可以在你的命名空间中得到testme
,就像你从scipy.stats.stats
中得到pearsonr
一样,然后可以直接使用pearsonr
。如果你编辑的版本不起作用,你正在做一些你没有向我们展示的错误。因为如果我创建了你的dbconn.py
andmyscript.py
并运行它,它工作正常。是否有可能在模块路径的其他地方有另一个dbconn.py
?或者您只是忘记保存对dbconn.py
的最新更改,所以它实际上没有testme
方法?或者您的实际代码有一个输入错误,并且定义了tes>是否改为tem
?
1)import <package>
2)import <module>
3)from <package> import <module or subpackage or object>
4)from <module> import <object>
from dbconn import testme
from testme import dbconn