一个计算机技术爱好者与学习者

0%

好好学Python:Python软件仓库PyPI

1. PyPI简介

The Python Package Index, abbreviated as PyPI (/ˌpaɪpiˈaɪ/) and also known as the Cheese Shop, is the official third-party software repository for Python.

PyPI是Python软件仓库,我们执行pip install时就是从PyPI仓库中拉取的软件包。

相关文档:

2. 替换国内PyPI仓库

2.1. PyPI镜像源

国内使用python下载包,经常会遇到下载不了的情况,这时可以替换PyPI仓库。

目前国内靠谱的 PyPI 镜像源有:

参考文档:PyPI 镜像使用帮助

2.2. 临时使用

比如更新tensorflow,可以使用

1
2
pip install tensorflow --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install tensorflow --upgrade --trusted-host -i https://pypi.tuna.tsinghua.edu.cn/simple

两者的差别,在于使用的协议是http还是https。在最新的pip版本(>=7)中,使用镜像源时,会提示源地址不受信任或不安全。

2.3. Windows配置PyPI

1、创建目录和文件

1
2
%appdata%\pip\pip.ini
# c:\user\username\pip\pip.ini

2、pip.ini内容为:

1
2
3
4
5
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/

[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn/simple/

2.4. Linux配置PyPI

1、创建目录和文件

1
vi ~/.pip/pip.conf

2、pip.conf内容为:

1
2
3
4
5
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/

[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn/simple/

2.5. Anaconda配置PyPI

1
2
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes

虽然修改了软件源,但是pip search命令还是不能使用的,因为搜索软件使用的协议与安装软件不同。pip search基于xmlrpclib实现,pip install基于urllib2实现。

3. 打包Python软件包

3.1. 打包软件包

1、准备python项目

1
2
3
4
.
├── example
│   └── main.py
└── setup.py

其中main.py内容为:

1
2
if __name__ == '__main__':
print("hello")

2、准备setup.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from setuptools import find_packages
from setuptools import setup

setup(
name="example",
version="1.0.1",
author="voidking",
author_email="voidking@qq.com",
description="desc",
long_description="long desc",
license='Apache2.0',
# packages=['example'] # python项目文件夹的名字
packages=find_packages()
)

3、执行打包

1
2
3
pip install setuptools
pip install wheel
python setup.py bdist_wheel sdist

打包说明:
python setup.py bdist_wheel sdist 是Python中用来打包源代码的命令,生成的发布包保存在项目目录下的 dist 目录中。

这个命令一次生成两种包:

  • bdist_wheel:创建一个二进制分发版的 “wheel” 归档文件。这是一种Python二进制模块分发格式,它比 egg 格式更加简单,更方便。这种分发包含已经编译好的Python源码,一般用于Python3.5以上的版本。
  • sdist:创建一个源码分发版的 “source distribution” 归档文件(通常是.tar.gz或.zip)。这种包含Python的原始代码,下载后需要使用者自己编译。

3.2. 测试wheel包

1
2
pip install dist/example-1.0.1-py3-none-any.whl
python -m example.main

4. 上传Python软件包到 devpi

4.1. 安装配置PyPI Server

首先,我们要有一个基于 devpi 的PyPI Server,安装配置方法参考文档:《使用Docker安装配置PyPI Server》

4.2. 上传软件包

1、下载安装devpi client

1
pip install devpi-client

2、指定PyPI Server

1
2
devpi use http://192.168.56.101:3141
devpi use root/dev

或者:

1
devpi use http://192.168.56.101:3141/root/dev

3、登录PyPI Server

1
devpi login root --password=xxx

4、上传Python软件包

1
devpi upload --wheel

想要带文档上传的话,参考文档Sphinx配置conf.py文件

1
2
pip install sphinx
devpi upload --wheel --with-docs

4.3. 删除软件包

1
2
devpi remove example
devpi remove example>=1.0.1

4.4. 推送包到另外的索引

devpi push 命令是将包从一个索引推送到另外一个索引,例如将包example推送到root/dev

1
devpi push example==1.0.1 root/dev

5. 上传Python软件包到 pypi.org

5.1. 准备 pypi.org token

1、访问pypi.org,注册一个账号

2、在Account settings页面,Add API token

3、创建 pypi 配置文件 $HOME/.pypirc

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

5.2. 上传软件包

1、安装 twine

1
pip install twine

2、上传Python软件包

1
twine upload dist/*

参考文档:

  • 本文作者: 好好学习的郝
  • 原文链接: https://www.voidking.com/dev-python-pypi/
  • 版权声明: 本文采用 BY-NC-SA 许可协议,转载请注明出处!源站会即时更新知识点并修正错误,欢迎访问~
  • 微信公众号同步更新,欢迎关注~