需求:将自定义的模块发布,并安装到系统目录。
步骤:
1.自定义一个包。名字自己定义,这里以“package1”为例。
2.在包里自定义一个要发布的模块,用以存放存放要发布的模块代码。这里 以“package1.MyMath.py”为例。
3.新建一个setup.py的模块(存放模块的元数据,描述等相关信息)。
from distutils.core import setup # 导入 setup() 函数
setup(name="package1压缩包", version="1.0", description="描述123456",
author="zwm", py_modules=["package1.MyMath",])
![v2-b51c7005cdb255eb5c1778cc7d391e02_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/b771f9eb0975223dad8f06f93be8bbf5.jpeg)
4.创建一个文件夹,将包“package1”和“setup.py”存放进去。我这将文件夹n命名为"test“
![v2-1d26d48c3668ef7f8403ac3c3907286d_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/db9fc65db11fe8831c853d7d4147bdaf.jpeg)
5.cmd.exe 开始操作
a.先进入到”test“所在的路径
![v2-13179588d3cda18c21225b983b35d679_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/24314ffa7caad6e04a4ed65d0ab7b6d0.jpeg)
b. 构建模块:python setup.py build 回车
![v2-64fcc34cf48d9a5b6a4454b135848618_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/e8831d208ef83a49373b46a672818e8e.jpeg)
c. 发布模块: python setup.py sdist 回车
![v2-ddf327f34f276e83e61a8f6476db4451_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/0eadf27647f33d2fd0f620308f1d615a.jpeg)
此时的“test”文件夹已经多出来几项内容,如下图:
![v2-abf25f41e21d4cfc463fffeaa2a9c144_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/2fd89ca172f8bc14ea834785ff43e464.jpeg)
其中“dist”文件夹里就是我们发布的模块的安装压缩包
6.安装模块
a.找到之前的安装包,解压
![v2-275b90ec8764130a5afc467e67a1fdd3_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/dc9fdeeb6eff9ca471a0ea3d850b70fc.jpeg)
b.进入到解压后的文件夹所路径
c.安装 : python setup.py install
![v2-ef3ca071bf86c59b665735fdc938a3a4_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/814897d751b46066afb053688904cbed.jpeg)
安装完成,可以查看和使用了。
7.遇到的异常情况:
在使用过程时我遇到了一个问题:在新的项目中我可以查看到该模块,但是导入的时候会抛异常。异常如下:
![v2-a927e1bfdb6916586ad2be42bbf7d682_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/97bd38ad2148c6fc0931f3069ec3df68.jpeg)
经过排查发现新的模块是虚拟环境下的,只要将这里的环境转换为下图中 2 所指的环境即可正常使用。
![v2-bc42cf6fb1aa078aa0c51ea95ce82c80_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/ab356ba8e5424741c2e10422d0552fd1.jpeg)