使用docker+devpi搭建本地pypi源的方法

作者:Rookie 时间:2023-11-03 03:52:44 

前一段时间开发需要经常使用 pip 下载,虽然把 pip 源改成了国内源,但我对速度还是不满意,更为重要的是集成
测试环境是离线的,要在集成测试环境开发显然需要搭建自己的本地 pip 源。在使用 devpi 之前我曾使用过 pip2pi,但有个 bug 导致离线环境下的 tox 命令总是失败,所以最后采用 devpi 搭建 pip 源。这里使用 docker 部署,方便又快速,如果不小心弄崩了也只需要重新运行 docker 容器就好了。如果你的环境没有安装 docker 可以自行搜素安装方法,比如 docker 社区的文档 install docker。如果你是 Centos 用户,可以使用以下方法安装


sudo yum update
sudo yum -y install docker
sudo systemctl enable docker
sudo systemctl start docker

接下来使用使用 docker 部署一个 Python 本地镜像源,我们可以使用 docker hub 上已有的镜像,我这里选择的是
muccg/devpi 这个镜像


# 设置 devpi 服务器管理员密码
DEVPI_PASSWORD = 123

mkdir -p /src/docker/devpi
mkdir /tmp/wheelhouse

docker run -d --name devpi \
 --publish 3141:3141 \
 --volume /tmp/wheelhouse:/wheelhouse
 --volume /srv/docker/devpi:/data \
 --env=DEVPI_PASSWORD=$DEVPI_PASSWORD \
 --restart always \
 muccg/docker-devpi

接着先在本地下载好所需的wheel包,requirements.txt文件内容即为我们需要的 Python 库列表


pip wheel --wheel-dir /tmp/wheelhouse -r requirements.txt

如果从 pip 源下载的库已经是 wheel 包的话文件将会被直接放在 /tmp/wheelhouse 内,如果是
tar 包,pip 会先 build 出 wheel 包,这可能需要一些时间。下载完成后 wheelhouse 内容类似


ll /tmp/wheelhouse
total 524K
-rwxrwxrwx 1 rookie rookie 155K Apr 6 23:40 certifi-2019.3.9-py2.py3-none-any.whl
-rwxrwxrwx 1 rookie rookie 131K Apr 6 23:40 chardet-3.0.4-py2.py3-none-any.whl
-rwxrwxrwx 1 rookie rookie 58K Apr 6 23:40 idna-2.8-py2.py3-none-any.whl
-rwxrwxrwx 1 rookie rookie 57K Apr 6 23:40 requests-2.21.0-py2.py3-none-any.whl
-rwxrwxrwx 1 rookie rookie 116K Apr 6 23:40 urllib3-1.24.1-py2.py3-none-any.whl

下载完成后如果本地环境安装了devpi客户端,可以直接上传 wheel 包,不过由于我们在创建容器时已经

wheelhouse 文件夹挂载进去,也可以在在容器里直接操作


# 进入容器
docker exec -it -u root devpi bash

# 登陆并上传
devpi use http://<host_ip>:3141/root/public --set-cfg
devpi login root 123
devpi upload --from-dir /wheelhouse

上传完成后可以使用 http://<host_ip>:3141 查看 pip 本地源服务器状态。

若要临时使用可以使用 pip install 的 --index 和 --trusted-host 选项


pip install --index http://<host_ip>:3141/root/public/+simple/ \
     --trusted-host <host_ip>

或者修改 pip.conf 文件永久使用


# vim ~/.pip/pip.conf
[global]
index_url = http://<host_ip>:3141/root/public/+simple/
trusted-host = <host_ip>
[search]
index = http://<host_ip>:3141/root/public/

来源:https://segmentfault.com/a/1190000018781421

标签:docker,devpi,pypi源
0
投稿

猜你喜欢

  • Linux时间子系统之时间的表示示例详解

    2023-09-21 00:22:06
  • 让百度三天就收录的诀窍

    2009-04-02 11:25:00
  • 安全防范 对于Ddos攻击的分析及对策

    2009-09-23 20:04:00
  • Linux中多线程详解及简单实例

    2022-02-06 21:53:46
  • 浅谈Linux信号机制

    2023-07-10 20:21:50
  • 百度联盟新版的主题推广代码的自定义优化

    2008-06-17 15:04:00
  • 做站4年的经历和支出(附购买空间的注意事项)

    2008-07-18 13:07:00
  • 最完善方法 优化Windows服务器磁盘性能

    2007-09-06 14:47:00
  • Exchange Server 2007 常见问题解答

    2010-02-22 19:15:00
  • Docker 删除及清理镜像的方法

    2022-09-09 09:08:26
  • Ubuntu16.04.5LTS安装SVN的过程

    2023-07-26 01:19:27
  • CentOS7挂载新数据盘的完整步骤

    2022-12-02 18:53:00
  • 标题的魅力 再说标题党之如何写好标题

    2009-09-11 16:00:00
  • nginx缓存功能cache的教程

    2009-09-23 20:00:00
  • Kingsaas开辟IT站点及个人网赚蓝海

    2009-07-24 18:52:00
  • Linux系统下配置功能完善的Web服务器

    2007-04-03 10:24:00
  • docker compose入门helloworld的详细过程

    2022-10-15 16:14:15
  • linux less命令实例详解

    2023-11-03 07:49:59
  • QQ网站登录的RSA加密传输缺陷分析

    2007-11-25 15:04:00
  • docker中如何将jar包构建成镜像并执行

    2022-08-22 12:48:58
  • asp之家 网站运营 m.aspxhome.com