python无法识别导入模块中的函数



我在Jupyter笔记本上工作。我创建了一个名为conf .py的简单模块,用于将英里转换为公里。当我尝试在单独的代码(在同一目录中)导入此模块时,导入似乎成功了,但它不识别我在'conv'模块中定义的任何一个函数。

我已经导入了os, os.getcwd()为conf .py提供了正确的文件夹…

conf .py

in_n_ft = 12
ft_n_mile = 5280
m_n_km = 1000
cm_n_in = 2.54
cm_n_m = 100
mm_n_m = 1000
def ft_to_km(feet):
return feet*in_n_ft*cm_n_in/cm_n_m/m_n_km
print(ft_to_km(5280))
def mil_to_km(mile):
return mile*ft_n_mile*in_n_ft*cm_n_in/cm_n_m/m_n_km

print(mil_to_km(3.2)) 

新模块代码

import conv
km = conv.mil_to_km(5) 

错误提供


AttributeError                            Traceback (most recent call last)
<ipython-input-111-bfd778724ae2> in <module>
3 import conv
4 
----> 5 km = conv.mil_to_km(5)
AttributeError: module 'conv' has no attribute 'mil_to_km'

当我输入

dir(conv)

['__builtins__',
'__cached__',
'__doc__',
'__file__',
'__loader__',
'__name__',
'__package__',
'__spec__']

我做错了什么?

编辑

我也试过

from conv import mil_to_km

当我这样做时,我得到了一个不同的错误

cannot import name 'mil_to_km' from 'conv' (C:Users223023441Documentspythonconv.py)

我还查询了模块使用:

from inspect import getmembers, isfunction
import conv
print(getmembers(conv, isfunction))

从这里得到:

['__builtins__',
'__cached__',
'__doc__',
'__file__',
'__loader__',
'__name__',
'__package__',
'__spec__']

我也无法访问import. py文件中的任何变量…当我保存py文件时,我做错了什么吗?Jupyter将ipynb作为公共文件,当我将"另存为"转换为conf .py时,这会把它搞砸吗?

所以最终的问题是我保存。py文件的方式…我在jupyter笔记本中使用'save as'命令,并输入'conv.py'为我的文件保存…这在目录中显示为.py文件,但我的主文件不能正确识别它。当我下载了.py文件后,从我的下载文件夹中剪切并粘贴到我的工作目录中,一切都工作了…

您应该导入from模块。试试这个:

from conv import mil_to_km
km = mil_to_km(5) 

原因是当您以这种方式导入模块时,您正在执行它。按照我所展示的方式,您只需要导入所需的函数。

最新更新