我正在学习python,我在导入模块/软件包时遇到了问题 好吧,我正在尝试制作一个包含一些模块的软件包,但问题是:* .py文件相互依赖 这是主要.py文件的代码
import suite_syracuse.altitude as alt
import suite_syracuse.duree_vol as dure
N=int(input("Veuillez rentrer le premier terme de la suite "))
print("le numero de la vol est ",N,"\nson altitude est ",alt.Altitude(N))
当我运行它时,我会得到
Traceback (most recent call last):
File "./afficher_vol.py", line 2, in <module>
import suite_syracuse.altitude as alt
File "/home/daly/Workshop/Python/suite_syracuse/altitude.py", line 2, in <module>
import Next
ModuleNotFoundError: No module named 'Next'
这是Package体系结构:
Workshop/Python/suite_syracuse:
-rwxr-xr-x 1 **** **** 158 juil. 12 00:36 altitude.py
-rwxr-xr-x 1 **** **** 151 juil. 12 00:27 duree_vol.py
-rw-r--r-- 1 **** **** 0 juil. 11 22:28 __init__.py
-rwxr-xr-x 1 **** **** 109 juil. 12 00:34 Next.py
-drwxr-xr-x 2 **** **** 4096 juil. 12 00:37 __pycache__
最后是height.py文件:
#!/usr/bin/python3.7
import Next
def Altitude(N):
L=[]
while Next.suiv(N)!=1:
L.append(Next.suiv(N))
N=Next.suiv(N)
return max(L)
谢谢你们:)
答案 0 :(得分:1)
我发现wat错了,我必须放入一个导入文件,因为它是
包import suite_syracuse.Next
了解
import Next
无论如何:)
答案 1 :(得分:0)
默认情况下,导入是绝对导入。因此,import Next
正在寻找一个名为Next
的顶级模块,这不是您想要的。
但是,当您尝试在同一软件包中导入另一个模块时,通常不需要绝对导入,而需要相对于当前软件包的导入:
from . import Next
如果您确实希望绝对导入,则需要指定顶级软件包(或者,对于更深层嵌套的模块,请使用完整路径),以从以下位置导入:
from suite_syracuse import Next
或者,当然,您可以这样做:
import suite_syracuse.Next
…但是,您还必须更改代码以调用suite_syracuse.Next.suiv
而不是Next.suiv
。
在官方教程的Modules下对此进行了全部解释,但在本章的各处都有些分散。 (大部分内容都在Intra-package References中,但是如果不先阅读本章其余部分的一半,您将找不到,甚至无法理解。)
您可能会发现阅读PEP 328(添加了当前相对导入语法的语言更改建议)更有用,该建议为设计提供了很多背景知识,以及您想使用的时间和原因的背景绝对进口还是相对进口。