每天进步一点点:Python项目的打包与发布

每天进步一点点:Python项目的打包与发布

想将自己写的python3 代码部署到另外一台VPS上,自己最常用的方式就是用scp复制了,但是总是感觉这样很繁琐也不优雅。你看别的项目用pip install安装多好呀。


(图源 :pixabay)

于是去学了一下怎么打包,怎么弄pip,发现网上的文章太多,并且很多都已经过时了,最后参考Packaging Python Projects,大致搞明白了怎么做,在这记录一下。

打包操作

打包操作就是把python项目放到一个安装包/分发包里,这样无论是传输还是安装使用时,都只需和一个文件打交道就好了,不必面对一大堆目录。

安装支持工具

在进行打包之前,首先需要安装相应的支持工具,主要是setuptoolswheel

python3 -m pip install --user --upgrade setuptools wheel

我的系统中这两个已经存在了。

setup.py

之后就是弄好项目的目录结构以及创建setup.py。

项目的目录结构大致这样:

image.png

setup.py的内容以及各项内容的意义请参考这里:https://packaging.python.org/tutorials/packaging-projects/#creating-setup-py

除了setup.py外,弄个README.md以及LICENSE会让项目看起来更加正规与友好。当然了,像我这种自己用的小项目,其实没有这俩文件也没啥。

生成分发包

做好上述工作以后,就可以生成分发包了。

生成分发包的命令如下:

python3 setup.py sdist bdist_wheel

可以用如下命令查看setup.py后边具体命令的解释:

python3 setup.py --help-commands

返回信息如下:

image.png

所以我们知道sdist是创建源码分发包,而bdist_wheel是创建wheel格式分发包。

执行完成后,我们就会在dist目录下发现与sdistbdist_wheel相对应的两个文件,这两个文件就可以用于安装/分发等操作啦。

发布项目

其实项目打包好,并且能安装,对我而言已经足够了,不过还是探索了一下发布项目的流程。

首先强调一点,仅仅是测试的话,应该使用Test PyPI。以下内容以pypi为例,大部分同样适用于TestPyPI。

创建API token

在上传项目之前,先创建API token。

访问如下链接:

https://pypi.org/manage/account/

点击Add API token

image.png

起个名字:

image.png

查看生成的token,主要保存好:

image.png

使用Token

pypi 上给出如下提示:

To use this API token:

  • Set your username to token
  • Set your password to the token value, including the pypi- prefix

所以我们编辑$HOME/.pypirc文件,加入如下内容:

1
2
3
[pypi]
username = __token__
password = pypi-xxxxxxxx

上传项目

在上传项目之前,需要安装twine

python3 -m pip install --user --upgrade twine

关于twine的介绍(主要解决加密上传的问题):

Twine is the primary tool developers use to upload packages to the Python Package Index or other Python package indexes. It is a command-line program that passes program files and metadata to a web API. Developers use it because it’s the official PyPI upload tool, it’s fast and secure, it’s maintained, and it reliably works.

然后使用如下指令就可以上传/发布项目啦:

python3 -m twine upload --repository pypi dist/*

其它补充

上传项目可以上传源码版或者wheel版(或者其它版本),都可以用pip安装的,推荐wheel版。

setup.py文件还是挺复杂的,我现在还有点晕头转向,弄好还真不容易呢。关于setup.py更详细内容,可以参考:Writing the Setup Script

参考链接


This page is synchronized from the post: ‘每天进步一点点:Python项目的打包与发布’

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×