Python打包系统简单入门

本文介绍了Python的打包系统,主要包括pip的使用,如安装、代理、需求文件、卸载、更新等操作,以及如何打包项目。重点讲解了编写setup.py文件,包括project_urls、package_data、data_file、entry_points和版本号。最后,讨论了打包项目的不同形式,如源码分发包(sdist)和Wheels,并展示了如何发布项目到Python Package Index。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近把pyenv、pipenv这种都研究了一下,然后我发现一个严重的问题:就是我虽然看了半天这些工具,但是我对Python自己的打包系统却完全没有了解。所以这篇文章就来研究一下Python自带的打包系统。

pip

先来详细介绍一下pip的用法,平时基本上我们用pip的时候也就是一个pip install。其实pip也有很多特性,在此先介绍一下常用的一些特性。此部分参考了pip文档,想了解更多的话可以看原文。

安装

最常用的命令就是安装了,除此以外还可以指定版本号:

$ pip install SomePackage            # 不指定版本号,安装最新版
$ pip install SomePackage==1.0.4     # 指定版本号
$ pip install 'SomePackage>=1.0.4'     # 指定最小版本号

$ pip install -r requirements.txt # 从需求文件安装
$ pip install -e . # 从本地项目setup.py安装

使用代理服务器

当从官方的PyPI源安装比较慢的时候,可以考虑使用代理服务器,指定代理服务器的方法有三种:

  • 使用--proxy参数在命令行指定,代理格式为[user:passwd@]proxy.server:port
  • 在配置文件中指定。
  • 设置http_proxy, https_proxyno_proxy环境变量。

使用需求文件(requirements.txt)

在需要很多pip包的项目中,用pip一个个安装包不是一个好办法,这时候可以考虑使用需求文件。

如果要生成需求文件,用下面的命令。这会将当前Python环境中的所有包的当前版本状态保存下来,将来安装的时候会精确还原到冻结的那个状态。

pip freeze > requirements.txt

要从需求文件中安装,则是用下面的命令:

pip install -r requirements.txt

官方文档还给出了一个带注释的实例需求文件:

#
####### example-requirements.txt #######
#
###### 没有版本标识符的包,会安装最新版 ######
nose
nose-cov
beautifulsoup4
#
###### 带版本标识符的包 ######
#  版本标识符的资料 https://www.python.org/dev/peps/pep-0440/#version-specifiers
docopt == 0.6.1             # Version Matching. Must be version 0.6.1
keyring >= 4.1.1            # Minimum version 4.1.1
coverage != 3.5             # Version Exclusion. Anything except version 3.5
Mopidy-Dirble ~= 1.1        # Compatible release. Same as >= 1.1, == 1.*
#
###### 还可以指定其他的需求文件 ######
-r other-requirements.txt
#
#
###### 还可以指定本地货网络上的特定包 ######
./downloads/numpy-1.9.2-cp34-none-win32.whl
http://wxpython.org/Phoenix/snapshot-builds/wxPython_Phoenix-3.0.3.dev1820+49a8884-cp34-none-win_amd64.whl
#
###### Additional Requirements without Version Specifiers ######
#   和第一部分一样,这里这些部分没有顺序需求,可以随意改变位置
rejected
green
#

版本标识符用来指定包的版本,有以下几个例子:

SomeProject
SomeProject == 1.3
SomeProject >=1.2,<.2.0
SomeProject[foo, bar]
SomeProject~=1.4.2

从6.0版本开始,pip也支持环境标记(也就是分号后面跟Python版本或者系统类型):

SomeProject ==5.4 ; python_version < '2.7'
SomeProject; sys_platform == 'win32'

卸载

卸载某个包使用下面的命令:

$ pip uninstall SomePackage

列出包

要列出所有已安装的包:

$ pip list
docutils (0.9.1)
Jinja2 (2.6)
Pygments (1.5)
Sphinx (1.1.2)

要列出过时的包:

$ pip list --outdated
docutils (Current: 0.9.1 L
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值