当前在 pip 的源中,有很多中国的源,但是,如果我们自己私人或者公司有一些不想公开的库,但是又希望使用 pip 工具管理的话,搭建自己的 pip 源是个不错的方法,在这种需求下就要求搭建简单方便,并且尽可能少的占用空间,在寻找对比了不少工具之后,我选用了一款开源的工具 —— pypiserver。本文就将介绍一下如何使用 pypiserver 作为服务器搭建一个自己的源,并且如何配置本地的 pip 工具。
安装 pypiserver
pypiserver 的安装很简单,他支持多种方式,比较常见的方法有两种,一种是安装 pypiserver 库,然后用命令行启动,另外一种是下载单一 python 文件,执行 python 文件启用,这里介绍的是安装库,以命令行的方式启用:
[[email protected]]# pip install pypiserver
[[email protected]]# pip install passlib # 上传需要用到
设置 pypiserver
安装完 pypiserver 之后,我们需要做一些配置,其实配置很简单,只是有些是必要的,例如
创建库存放目录
[[email protected]]# sudo mkdir -p /var/pypi/packages
设置上传用户密码
[[email protected]]# htpasswd -sc htpasswd.txt admin
配置 setuptools 工具
在 ~/.pypirc
文件里面填入内容:
[[email protected]]# cat ~/.pypirc
[distutils]
index-servers =
local
[local]
repository: http://localhost:8080
username: admin
password: admin
启动 pypiserver
简单配置之后,我们就可以将服务器跑起来了:
[[email protected]]# pypi-server -p 8080 -P htpasswd.txt /var/pypi/packages &
测试 pypiserver
[[email protected]]# export PIP_EXTRA_INDEX_URL=http://localhost:8080/simple/
[[email protected]]# git clone https://github.com/pallets/flask.git
[[email protected]]# cd flask
[[email protected]]# python setup.py sdist upload -r local
[[email protected]]# ls -al /var/pypi/packages
你应该会发现在 /var/pypi/packages
目录下出现了一个包:
[[email protected]]# ls -al /var/pypi/packages
total 524K
-rw-rw-r-- 1 tyrael tyrael 521K Aug 28 18:45 Flask-0.11.2.dev0.tar.gz
这样就说明我们的之间服务器是正常的。
从本地源中安装包
使用本地源安装包的话有需要配置的,也有不需要配置的方法。如果用配置的话以后每次使用起来就简单很多,但是,如果不配置的话使用起来就麻烦一些,这里就使用配置的方法吧:
[[email protected]]# vim ~/.pip/pip.conf
然后在里面填入两行:
[global]
extra-index-url = http://localhost:8080/simple/
这个时候我们就可以简单得使用 pip 下载了:
[[email protected]]# pip install Flask
扩展问题
1. 如何配置 https
pypiserver 自身不支持配置 https,但是,作者的推荐是在 nginx 后面代理 pypiserver,使用 nginx 来支持 https 访问。
2. 如果上传包到 pypi.python.org
其实上传到 pypi.python.org 和上传到本地差不多,只不过是地址和用户名变了,将 .pypirc 内容修改为:
[distutils]
index-servers =
pypi
local
[pypi]
repository: https://pypi.python.org/pypi
username:<your_pypi_username>
password:<your_pypi_passwd>
[local]
repository: http://localhost:8080
username: admin
password: admin
然后上传的时候这样敲:
python setup.py register -r pypi
python setup.py sdist upload -r pypi
这样就上传到了 pypi 源了。
3. 如何指定官方源
默认得,如果对于在本地源中不存在的库,pypiserver 会从 pypi 中下载,如果你希望从其他地方下载,例如 豆瓣源、阿里源,那么你可以在启动服务器的时候增加参数 --fallback-url
:
[[email protected]]# pypi-server -p 8080 -P htpasswd.txt --fallback-url http://mirrors.aliyun.com/pypi/simple/ /var/pypi/packages &