即使经过谷歌搜索,尝试了一百万件事,我也无法让包导入正常工作。我有一个像这样的简单文件夹结构:
(main folder)
---------------
funktio (folder)---->| __init__.py |
main.py | tulosta.py |
country_data.py ---------------
基本上我正在尝试将tulosta.py导入main.py. Tulosta.py有一个函数可以打印来自country_data.py的某些东西。到目前为止,当我将tulosta.py的内容粘贴到main.py并从main.py中删除tulosta.py的导入时,该程序正常工作(因此脚本正确地从country_data读取)。我正在做一个学校作业,它需要导入一个模块和一个包。我的问题是,如果我试着
import funktio.tulosta
我只得到
Traceback (most recent call last):
File "E:\Kouluhommelit\Script-programming\moduuliharkka\main.py", line 4, in <module>
tulosta.tulosta()
NameError: name 'tulosta' is not defined
如果我尝试将“从tulosta import tulosta”放入init文件中,我会
Traceback (most recent call last):
File "E:\Kouluhommelit\Script-programming\moduuliharkka\main.py", line 1, in <module>
import funktio.tulosta
File "E:\Kouluhommelit\Script-programming\moduuliharkka\funktio\__init__.py", line 1, in <module>
from tulosta import tulosta
ModuleNotFoundError: No module named 'tulosta'
所以基本上无论我尝试什么,我都会收到错误代码。这是main.py中的代码:
import funktio.tulosta
import country_data
tulosta.tulosta()
和tulosta.py:
def tulosta():
for code in country_data.countrycodes:
print (country_data.codemap[code], ':\n\t','Head honcho:', country_data.countries[country_data.codemap[code]]['head honcho'],'\n\t','Population:', country_data.countries[country_data.codemap[code]]['population'],'million')
在经历了4个多小时的努力之后,我真的变得绝望了。这似乎是一个简单的操作,但显然不是。请帮忙。如果需要,我会提供更多信息。
这是作业:
Rearrange the code from previous exercises:
Make a folder called "moduuliharkka"
Make a python file called "country_data" where you put the lists and dicts from the exercise 15.
Then make a new folder inside the moduuliharkka-folder called "funktio" (tip: init)
Put the code from exercise 16. inside a function and save it as a .py file in the funktio-folder
Go back to your moduuliharkka-folder, make a main.py file where you import the country_data module and the funktio folder as a package
Call the function imported in the main.py script
答案 0 :(得分:0)
您需要在主文件中再拨一个电话。目前,您已从tulosta
导入文件funktio
,但是,您需要访问该文件中的函数/ class / variable。 tulosta.tulosta()
不包括仍需要的文件夹名称
主要:
import funktio.tulosta
functio.tulosta.tulosta() #call the function in "tulosta" here
如果您确实要将tulosta()
称为tulosta.tulosta()
,请使用别名导入:
import funktio.tulosta as tulosta
tulosta.tulosta()