执行 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

. 表示它应该从实际文件的父目录中查找,而不是从工作目录中查找。请注意,这仅适用于包文件。