Python 部署私有 pip 库
Python 部署私有 pip 库
本教程使用的是 pypiserver 这个 Python 包,其文档见:https://pypi.org/project/pypiserver/,Github 地址:https://github.com/pypiserver/pypiserver
1 - 环境介绍
操作系统:cent OS 7.6
Python 版本:3.7.3
2 - 准备工作
2.1 创建相关目录
# 创建服务器目录 mkdir -p /usr/local/pypi-server cd /usr/local/pypi-server # 创建后续管理包的目录 mkdir packages # 创建认证目录 mkdir auth
后续相关的操作,非特别说明,均在 /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/
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
注意:如果提示没有 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
« 上一篇: 基于Docker 部署 MySQL 主从复制
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律