Python 部署私有 pip 库

Python 部署私有 pip 库

image

本教程使用的是 pypiserver 这个 Python 包,其文档见:https://pypi.org/project/pypiserver/,Github 地址:https://github.com/pypiserver/pypiserver

1 - 环境介绍

操作系统:cent OS 7.6

image

Python 版本:3.7.3

image


2 - 准备工作

2.1 创建相关目录

# 创建服务器目录
mkdir -p /usr/local/pypi-server
cd /usr/local/pypi-server
# 创建后续管理包的目录
mkdir packages
# 创建认证目录
mkdir auth

image

后续相关的操作,非特别说明,均在 /usr/local/pypi-server 目录下


2.2 认证授权

这一步主要是为了保护你的 pip 库不能随意被上传、下载;pypiserver 采用的是 Apache-Like Authentication (htpasswd)

# 安装生成授权工具的命令
yum -y install httpd-tools
# 生成授权文件, 会 prompt 密码输入,重复两遍一样的 ChaosMoor
htpasswd -sc .chaos-moor-auth ChaosMoor
# 移动文件到 auth 目录下
mv ./.chaos-moor-auth auth/

image


3 - 运行服务

3.1 运行服务

我这里是用 Python 虚拟环境运行的

# 创建虚拟环境并激活
python -m venv runvenv
source runvenv/bin/activate
# 安装依赖模块
pip install pypiserver
pip install passlib
# 运行
pypi-server run \
-i 10.206.0.2 \
-p 12200 \
-a update,download \
-P /usr/local/pypi-server/auth/.chaos-moor-auth \
-o \
--fallback-url https://mirrors.aliyun.com/pypi/simple/ \
/usr/local/pypi-server/packages &
# 可以通过 curl 命令查看是否启动成功
curl http://10.206.0.2:12200

image

注意:如果提示没有 pypi-server 命令,把 pypi-server run 换成 python -m pypiserver run


3.2 pypi-server 参数说明

参数 说明 示例
-i host,默认 0.0.0.0 -i 10.206.0.2
-p 端口,默认 8080 -p 12200
-a 对那些操作进行密码验证,update|download|list,逗号分隔 -a update,download
-P 指定认证秘钥文件 -P auth.txt
--fallback-url 当本 pip 库没有时,到这个源去找 --fallback-url https://mirrors.aliyun.com/pypi/simple/
-o 上传时允许覆盖已经存在的包 -o

还有一些其他的参数,可以参照官方文档


3.3 客户端的使用

# 直接进行安装就行
pip install --trusted-host 10.206.0.2 --index-url http://10.206.0.2:12200/simple/ package-name
# 也可以对 pip 进行全局设定
pip config set install.trusted-host 10.206.0.2
pip config set global.extra-index-url http://10.206.0.2:12200/simple/
# 设定后直接用 pip 安装
pip install package-name

注意:如果在没有 https 的远程 url 上安装了 pypiserver,安装时将收到来自 pip 的“不受信任”警告,这时候需要 --trusted-host 选项。 也可以进行相关配置


3.4 Nginx 反向代理

我在 Nginx 进行了 SSL,所以我这里用 Nginx 做了一层反向代理,

server {
location /pypi/ {
proxy_set_header X-Forwarded-Host $host:$server_port/pypi;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://10.206.0.2:12200/;
}
}

注意:path 只能是 pypi


3.5 包的上传

如果我们不想手动的把包拖入到 package 文件夹下,可以通过以下进项上传

# 安装 twine 工具
pip3 install twine
twine upload dist/zither-2.1.0.tar.gz --repository-url http://10.206.0.2:12200
posted @   ChaosMoor  阅读(1266)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示
主题色彩