执行 python 包时遇到问题
Facing an issue with executing python package
我正在学习 python 包,但我遇到了这个问题:我创建了一个包文件夹“SamplePack”。在此文件夹中,我添加了 2 个扩展名为 .py 的模块文件和一个 __ init __.py 文件作为构造函数,如下所示:
Mod2.py
from math import *
def sqroot(x):
return sqrt(x)
def sine(x):
return sin(x)
def cos(x):
return cos(x)
def power(x,y):
return pow(x,y)
Mod1.py
def Add(x,y):
return x+y
def Div(x,y):
return x-y
def function():
x=input("What's your name? ")
y=input("Great", x, "What's your phone number? ")
__ 初始化__.py
import Mod1
import Mod2
Post 这个,我创建了包源文件,我将从中执行这些包模块。
Packuse.py
import SamplePack as sp
sp.Mod1.Add(20,20)
sp.Mod2.sqrt(30)
sp.Mod1.function()
当我通过python 提示执行Packuse.py 文件时。我收到此错误:
C:\Users\Program>python packuse.py Traceback (most recent
call last): File "C:\Users\Program\packuse.py", line 1,
in
import SamplePack as sp File "C:\Users\Program\SamplePack_init_.py", line 1, in
import Mod1 ModuleNotFoundError: No module named 'Mod1'
这是您的文件架构:
Program
├- packuse.py
└- SamplePack
├- __init__.py
├- Mod1.py
└- Mod2.py
您正在从 Program
目录启动代码,因此工作目录是 Program
.
当您从 packuse.py
导入 SamplePack 时,它会在工作目录中查找名为 SamplePack
的目录中名为 SamplePack.py
.
的文件
但是当您从 __init__.py
导入 Mod1
时,它还会查看工作目录,它始终是 Program
,而不是 SamplePack
。所以它找不到它,因为 Program
.
中没有任何 Mod1
目录或 Mod1.py
文件
您需要做的是精确地让导入系统查找指定的包或模块,从包目录开始(在本例中,SamplePack
)。
操作方法如下:
__init__.py :
from . import Mod1
from . import Mod2
.
表示它应该从实际文件的父目录中查找,而不是从工作目录中查找。请注意,这仅适用于包文件。
我正在学习 python 包,但我遇到了这个问题:我创建了一个包文件夹“SamplePack”。在此文件夹中,我添加了 2 个扩展名为 .py 的模块文件和一个 __ init __.py 文件作为构造函数,如下所示:
Mod2.py
from math import *
def sqroot(x):
return sqrt(x)
def sine(x):
return sin(x)
def cos(x):
return cos(x)
def power(x,y):
return pow(x,y)
Mod1.py
def Add(x,y):
return x+y
def Div(x,y):
return x-y
def function():
x=input("What's your name? ")
y=input("Great", x, "What's your phone number? ")
__ 初始化__.py
import Mod1
import Mod2
Post 这个,我创建了包源文件,我将从中执行这些包模块。
Packuse.py
import SamplePack as sp
sp.Mod1.Add(20,20)
sp.Mod2.sqrt(30)
sp.Mod1.function()
当我通过python 提示执行Packuse.py 文件时。我收到此错误:
C:\Users\Program>python packuse.py Traceback (most recent call last): File "C:\Users\Program\packuse.py", line 1, in import SamplePack as sp File "C:\Users\Program\SamplePack_init_.py", line 1, in import Mod1 ModuleNotFoundError: No module named 'Mod1'
这是您的文件架构:
Program
├- packuse.py
└- SamplePack
├- __init__.py
├- Mod1.py
└- Mod2.py
您正在从 Program
目录启动代码,因此工作目录是 Program
.
当您从 packuse.py
导入 SamplePack 时,它会在工作目录中查找名为 SamplePack
的目录中名为 SamplePack.py
.
但是当您从 __init__.py
导入 Mod1
时,它还会查看工作目录,它始终是 Program
,而不是 SamplePack
。所以它找不到它,因为 Program
.
Mod1
目录或 Mod1.py
文件
您需要做的是精确地让导入系统查找指定的包或模块,从包目录开始(在本例中,SamplePack
)。
操作方法如下:
__init__.py :
from . import Mod1
from . import Mod2
.
表示它应该从实际文件的父目录中查找,而不是从工作目录中查找。请注意,这仅适用于包文件。