我在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)
原因是当您以这种方式导入模块时,您正在执行它。按照我所展示的方式,您只需要导入所需的函数。