在内网环境下部署python开发环境,安装python第三方库比较麻烦,特别是安装需要多个依赖的库。一种比较好的解决方案是搭建一个本地的私有pip镜像源,有多个方案可以选择,比如pypiserver、pip2pi等,本文介绍使用python的pip2pi库,搭配nginx来搭建pip镜像源的方法。
目录
- 1 搭建环境
- 2 pip2pi安装
- 3 python包下载
- 4 创建索引
- 5 nginx安装配置
- 5.1 nginx安装
- 5.2 nginx配置
- 6 使用本地镜像源
1 搭建环境
Windows和Linux系统上都可以使用pip2pi来搭建pip镜像源,本文介绍在Linux上的部署方法,Windows系统类似。
使用的Linux发行版本为centos7:
$ uname -a
Linux Server 3.10.0-1160.114.2.el7.x86_64 #1 SMP Wed Mar 20 15:54:52 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
另外需要安装一下python环境,本文使用的python版本为3.10.11,安装编译方法可参考Python环境配置以及包管理方法详细介绍。
2 pip2pi安装
使用pip命令安装:
pip3 install pip2pi
离线环境可先到有网的环境下载whl包:https://pypi.org/project/pip2pi/#files
然后离线安装:
$ pip3 install pip2pi-0.8.2-py2.py3-none-any.whl
3 python包下载
在本地部署pypi源需要将python库下载到本地然后对其进行索引,因此库文件是很关键的,然而当前pypi官方源有巨量的python库文件,需要大量的空间(几十T)。如果你有足够的磁盘空间可以到pip国内镜像源下载。
实际使用中大多数python库用不上,仅下载团队项目开发所需要的那些库即可。
可使用pip download
命令下载所需的包,具体下载方法参考Python环境配置以及包管理方法详细介绍
4 创建索引
将下载的python安装包放到/home/pythonlibs
目录下,然后执行如下命令创建索引:
$ dir2pi /home/pythonlibs
执行成功后,/home/pythonlibs
目录下会创建一个simple目录,对库文件进行了索引:
├── simple
│ ├── aerich
│ │ ├── aerich-0.7.2-py3-none-any.whl -> ../../aerich-0.7.2-py3-none-any.whl
│ │ └── index.html
│ ├── aiofiles
│ │ ├── aiofiles-0.5.0-py3-none-any.whl -> ../../aiofiles-0.5.0-py3-none-any.whl
│ │ └── index.html
...
比如aerich库的index.html内容为:
<a href='aerich-0.7.2-py3-none-any.whl'>aerich-0.7.2-py3-none-any.whl</a><br />
如果有多个aerich版本的库文件,会在index.html文件中显示。
5 nginx安装配置
如果只是临时使用,也可以直接使用Python内置模块http.server来创建一个简单的web服务,在包文件目录(/home/pythonlibs
)执行如下命令即可:
python3 -m http.server 8086
Nginx是一个高性能的HTTP和反向代理web服务器,有很好的并发性能,下面介绍使用Nginx来发布镜像源。
5.1 nginx安装
到官网 https://nginx.org/en/download.html 下载nginx安装包nginx-1.24.0.tar.gz
,安装步骤如下:
# 1. 解压
$ tar -xvzf nginx-1.24.0.tar.gz -C /home# 2. 安装
$ cd /home/nginx-1.24.0/
$ ./configure --with-stream
$ make & make install
查看nginx安装路径:
$ whereis nginx
nginx: /usr/local/nginx
5.2 nginx配置
修改配置文件,其中我的Linux服务器IP地址为192.168.20.9:
$ vim /usr/local/nginx/nginx.conf1、设置
user root;2、配置pip源端口号以及路径server {listen 8086;server_name 192.168.20.9:8086;location / {root /home/pythonlibs;autoindex on;charset utf-8;}}
启动:
$ /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
$ /usr/local/nginx/sbin/nginx -s reload
注意:需要关闭服务器的防火墙,或者开放指定端口号,我这里是80876端口号。
启动成功后可在浏览器访问地址:http://192.168.20.9:8086/simple/
页面列出了所有索引成功的python库,说明pypi本地源已经搭建成功。
6 使用本地镜像源
本地源部署完成后,可以使用pip命令从搭建的本地源下载安装python库:
$ pip3 install xlwt -i http://192.168.20.9:8086/simple --trusted-host 192.168.20.9