1、关于pipyserver

因为单位的内网与互联网物理隔离,无法访问官方的PyPI,平时做python开发需要添加包非常不方便,虽然也可将包下载到本地,通过pip安装,但无法多机多人共享。

1
(venv)$ pip3 install /path/to/mypkgs/one.whl

于是在网上找了一些资料,发现有不少架设私有pypi服务的工具:

这里是官方的推荐列表

经过对比,我选择了pypiserver,官方对其介绍如下:

pypiserver is a minimal PyPI compatible server for pip or easy_install. It is based on bottle and serves packages from regular directories. Wheels, bdists, eggs and accompanying PGP-signatures can be uploaded either with pip, setuptools, twine, pypi-uploader, or simply copied with scp.

意思就是:

pypiserver 是用于pipeasy_install 的迷你PyPI兼容服务器,基于bottle 并将包直接存储在文件系统目录中,也支持通过pip,setuptools,twine,pypi-uploader或者简单的scp命令向服务器上传Whells, bdists,eggs等各种格式的包以及相关PGP签名。

搭建步骤非常简单:

2.安装

安装非常简单,如果能接互联网,则使用pip3安装

1
$ pip3 install pypiserver

如果不能接,先找个互联网电脑下载,然后把安装包复制到要安装的服务器中。

1
$ pip3 download pypiserver

3.运行 pypiserver 服务

  • 建一个目录,用于放各种包

    1
    $ mkdir ~/pipy-pkgs
  • 将你的包复制到~/pipy-pkgs 下,然后运行服务

    1
    $ pypi-server -p 8080 ~/pipy-pkgs &

    注意:pypiserver安装好后,pypi-server脚本一般位于~/.local/bin目录。

4.在客户机上访问

1
2
3
4
5
6
## 安装包
pip install --extra-index-url http://localhost:8080/simple/ ...
pip install --extra-index-url http://localhost:8080

## 检索可用的包
pip search --index http://localhost:8080 ...

5.配置客户机 pip

在linux上,可以通过编辑~/.pip/pip.conf文件,设定一次性 pip的源:

1
2
[global]
extra-index-url = http://localhost:8080/simple/

更多高级用法,请参考 官方主页