私有源用于团队多项目应用
代码封装共用,私有不想发布在 pypi 上
加速常用优秀 python 库快速安装
私有源服务选择
选择了小而美,并且最近一年还在维护的 pypiserver
搭建过程
安装环境
export PRIVATE_PYPI=xxx
cd $PRIVATE_PYPI
virtualenv pypienv # 建立一个virtaulenv
source $PRIVATE_PYPI/pypienv/bin/activate
pip install pypiserver # 安装pypi server
mkdir $PRIVATE_PYPI/package # 建立存放packages的文件夹
写入 shell 启动
#run-pypi.sh
#!/bin/sh
# 启动virtualenv
. $PRIVATE_PYPI/pypienv/bin/activate
exec pypi-server -p 3141 $PRIVATE_PYPI/package
使用 supervisor 维护进程
pip install supervisor
echo_supervisord_conf > /etc/supervisord.conf #生成配置文件
supervisord #启动
pypi-server
#配置 pypi-server
[program:pypi-server]
directory=/home/hadoop
command=sh run-pypi.sh
autostart=true
autorestart=true
redirect_stderr=true
startretries=3 ; 启动失败自动重试次数,默认是 3
user=root ; 用哪个用户启动
redirect_stderr=true ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile_maxbytes=20MB ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups=20 ; stdout 日志文件备份数; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile=/var/www/logs/pypi_stdout.log
# 软链
$ cd /etc/supervisor/conf.d/
$ sudo ln -s $PRIVATE_PYPI/pypi-supervisor.conf pypi-supervisor.conf
start
supervisorctl start pypi-server
验证权限
上传 package 需要用户名密码,密码文件使用命令 htpasswd #生成
sudo yum install httpd-tools # ubuntu apt-get install apache2-utils
htpasswd -sc $PRIVATE_PYPI/.htaccess user
更新 run_pypi.sh
exec pypi-server -p 3141 -P $PRIVATE_PYPI/.htaccess $PRIVATE_PYPI/package
刷新 supervisor
sudo supervisorctl reload
打包机配置 .pypirc
[distutils]
index-servers=privatepypi
[privatepypi]
repository:url
username:your name
password:your passwd
上传
python setup.py sdist upload -r privatepypi
安装私有源
pip install --extra-index-url path package-name --trusted-host path