将 Python 软件包封装成模块的方法(用于 import 导入)
简要介绍了如何将Python软件包封装成模块的方法。
目录
一、在 PyCharm 上新建项目
1. 新建项目
项目所在的路径和名称自行定义,选择 “自定义环境” → “选择现有” 。

2. 新建目录和 Python 文件
右键文件夹,点击 “新建” ,选择要创建的文件或目录。

为了更好的演示如何将 Python 软件包封装成模块,我在文件夹下创建了一个叫 craft_pack 的目录和一个叫 test_external 的 Python 文件。

二、新建 Python 软件包并编写代码
1. 在目录下新建 Python 软件包
在 craft_pack 目录下新建一个 Python 软件包。右键目录,选择 “新建” → “Python 软件包” ,命名为 animals 。

可以发现,Python 软件包下自带了 _init_.py 文件。

2. 编写需要封装的功能代码和 init 文件
在 Python 软件包下面创建两个 Python 文件,分别命名为 cat 和 dog ,在该 py 文件中编写需要封装的功能代码。

编写的代码如下所示:
cat.py :
def hello_cat():
print("Hello, cat!")
dog.py :
def hello_dog():
print("Hello, dog!")
_init_.py :
from . import cat
from . import dog
配置 _init_.py 文件是为了控制自定义包,选择哪些模块是对外可见的。
3. 测试编写的代码包
在 craft_pack 目录下新建一个名为 test_internal 的 Python 文件,并输入以下代码进行运行。
import animals
animals.cat.hello_cat()
animals.dog.hello_dog()

可以看出,运行成功。那么如果把上述代码放入 test_external.py 文件里运行是否能成功呢?

显然是不行的,因此我们需要将 animals 软件包封装成模块并安装,这样在任何路径下都可以成功 import animals 。
下面将介绍将 Python 软件包封装成模块的方法。
三、制作发布的压缩包
1. 创建 setup.py 文件
在 craft_pack 目录下新建一个名为 setup 的 Python 文件(模块安装脚本文件),并输入以下代码,具体的内容请自行修改:
from distutils.core import setup
setup(name="animals", # 包名
version="1.0", # 版本
description="给小猫小狗打招呼的包", # 描述信息
long_description="完整的给小猫小狗打招呼模块", # 完整描述信息
author="Elowen", # 作者
author_email="xxx@gmail.com", # 作者邮箱
url="……", # 主页
py_modules=["animals.cat",
"animals.dog"]) # 包含的模块列表
注:Python 3.12 版本没有 ‘distutils’ 模块,因此第一行代码需要改为:
from setuptools import setup。

有关上述字典参数的详细信息,可以参阅官方网站。
2. 构建模块和生成发布压缩包
- 点击终端,进入 setup.py 文件夹:
cd craft_pack

- 构建模块(在 Ubuntu 或 Windows 下都可以,主要注意的是:Windows 下是 python ,Ubuntu 下是 python3):
python .\setup.py build
此时,生成了一个名为 build 的目录。
- 生成发布压缩包
pip install wheel twine # 如果已安装该包,则忽略这条命令
python.exe .\setup.py sdist bdist_wheel
此时,生成了一个名为 animals.egg-info 和 dist 的目录:

四、安装模块
1. 安装模块
- 进入终端,输入以下命令,查看 dist 目录下有哪些内容:
cd dist
ls

- 输入以下命令安装模块:
pip install animals-1.0-py3-none-any.whl --force-reinstall --user

拓展:解压文件的命令为
tar xf .\animals-1.0.tar.gz
此时,模块已经安装好,在任意路径的其他文件里就可以运行下列代码了:
import animals
animals.cat.hello_cat()
animals.dog.hello_dog()
例如,在 test_external.py 文件里运行,从下图可以看出运行成功。

2. 卸载模块
- 在终端上先用
pip list查看安装过的模块

- 然后用
pip uninstall animals删除 animals 模块

- 最后再使用
pip list查看模块是否已被删除。

此时再次运行 test_external.py 文件就失败了。

参考文章:
【python程序,模块封装、发布并安装】
【Python将自己的代码封装成一个包供别人调用】

更多推荐


所有评论(0)