Python打包自己的项目成模块到pypi【可以自己使用pip安装的方法】【发布模块、发布自己的Python模块】
文章目录一、学习目标:二、具体步骤:1、注册账号:一、学习目标:学习如何将自己的项目或者方法打包成一个模块,上传到pypi里面,然后方便使用这个模块进行多个机器使用,不用再一次一次复制到项目统计目录下,直接pip安装即可对台机器分布式使用。二、具体步骤:1、注册账号:注册地址:...
文章目录
一、学习目标:
学习如何将自己的项目或者方法打包成一个模块,上传到pypi里面,然后方便使用这个模块进行多个机器使用,不用再一次一次复制到项目统计目录下,直接pip安装即可对台机器分布式使用。
二、具体步骤:
1、注册账号:
2、查看模块结构
https://pypi.org/project/requests/#files
3、测试自己的生成一个模块
安装打包需要使用的模块
pip install twine
pip install wheel
1)、模块结构编写:
-
接下来,就是先建立一个Python文件夹
MyPacekage_test
,将自己写的.py
文件放到这个文件夹下面,并且在同级目录同时创建一个__init__.py
文件 -
在
MyPacekage_test
的同级目录下面建立一个setup.py
文件
大致结构图:
①、setup.py
文件
from distutils.core import setup
packages = ['MyPacekage_test']
setup(name='MyPacekage_test-add',version='1.0',author='zjf', packages=packages, package_dir={'requests': 'requests'},)
解释:
1、MyPacekage_test-add 是最后pip list显示的模块名称
2、packages = [‘MyPacekage_test’] 中的MyPacekage_test 是import 可以引入的名称。
②、__init__.py
文件
把一些模块文件导入过来
from . import add_num
③、add_num.py
文件:
这个是直接的方法或者类的功能文件,需要在__init__.py
文件导入,这样安装之后才能直接使用。
我这里只是简单测试下一个功能,简单写了三个方法:
add_,md5,sha1三个方法函数。
import hashlib
def add_(num1,num2):
return num1 + num2
def md5_( name):
# 创建md5对象
m = hashlib.md5()
# 若写法为m.update(str) 报错为: Unicode-objects must be encoded before hashing
b = name.encode(encoding='utf-8')
m.update(b)
str_md5 = m.hexdigest()
return str_md5
def sha1( name):
sha1 = hashlib.sha1()
key = name.encode('utf-8')
# key ='how to use sha1 in ' # TypeError: Unicode-objects must be encoded before hashing
sha1.update(key)
sha1_str = sha1.hexdigest()
return sha1_str
2)、生成模块步骤:
先记录下当前的tree文件。
①、编译:
运行python setup.py build
来编译模块
python setup.py build
tree看下:
②、生成发布压缩包:
生成发布压缩包:python setup.py sdist
python setup.py sdist
生成了压缩包文件:
③、生成网络发布包wheel文件:
注意点:
记得一定要再setup.py
导入import setuptools
不然会一直报错:error: invalid command 'bdist_wheel'
python setup.py bdist_wheel
④、本地直接安装
# 可以是相对路径,也可以是绝对路径
pip install ./dist/MyPacekage_test_add-1.0-py3-none-any.whl
# 强制安装,如果已经安装,替换原来的
pip install ./dist/MyPacekage_test_add-1.0-py3-none-any.whl --force-reinstall
3)、测试使用:
from MyPacekage_test import add_num
result1 = add_num.add_(3,5)
print("result1",result1)
result2 = add_num.md5_('121231')
print("result2",result2)
result3 = add_num.sha1('121231')
print("result3",result3)
输出结果:
result1 8
result2 84ed30001fcccfc70cc54b02b82bbe7d
result3 9e1d6d393777fa08a4cf642c0bf67adbd08962de
4)、上传到pypi里面:
上传命令:
twine upload dist/*
登陆pypi:
查看是否成功:
5)、卸载刚刚本地安装的,然后重新安装线上的
①、卸载:
# 找下自己的模块:
pip list
# 卸载
pip uninstall MyPacekage-test-add
# 查看是否卸载完全
pip show MyPacekage-test-add
②、pip安装测试:
模块地址:https://pypi.org/project/MyPacekage-test-add/
pip install MyPacekage-test-add
安装成功,经验了我,突然我想说,这清华镜像也太牛逼了吧,我刚刚才上传,清华镜像源都有了我测试的模块,
总结:
至此,Python自己写模块,并且将自己的模块发布到pypi的整体步骤流程,都记录下来了,其实我的草稿早就有了,只是一直很懒,老是往后堆积,今天总算吧整体流程撸了一遍,希望帮助需要的小伙伴。
参考
参考一些地址,还有遇到的问题的解决思路:
https://zhuanlan.zhihu.com/p/102265858
https://blog.csdn.net/coolcooljob/article/details/80082907
https://stackoverflow.com/questions/34819221/why-is-python-setup-py-saying-invalid-command-bdist-wheel-on-travis-ci
更多推荐
所有评论(0)