资讯专栏INFORMATION COLUMN

使用 docker + devpi 搭建本地 pypi 源

Shimmer / 648人阅读

摘要:前一段时间开发需要经常使用下载,虽然把源改成了国内源,但我对速度还是不满意,更为重要的是集成测试环境是离线的,要在集成测试环境开发显然需要搭建自己的本地源。在使用之前我曾使用过,但有个导致离线环境下的命令总是失败,所以最后采用搭建源。

前一段时间开发需要经常使用 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/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://:3141/root/public --set-cfg
devpi login root 123
devpi upload --from-dir /wheelhouse

上传完成后可以使用 http://:3141 查看 pip 本地源服务器状态。
若要临时使用可以使用 pip install 的 --index--trusted-host 选项

pip install --index http://:3141/root/public/+simple/ 
            --trusted-host 

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

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

最后,欢迎关注我的僵尸微信公众号 :) CodeWar

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/43541.html

相关文章

  • 使用 docker + devpi 搭建本地 pypi

    摘要:前一段时间开发需要经常使用下载,虽然把源改成了国内源,但我对速度还是不满意,更为重要的是集成测试环境是离线的,要在集成测试环境开发显然需要搭建自己的本地源。在使用之前我曾使用过,但有个导致离线环境下的命令总是失败,所以最后采用搭建源。 前一段时间开发需要经常使用 pip 下载,虽然把 pip 源改成了国内源,但我对速度还是不满意,更为重要的是集成测试环境是离线的,要在集成测试环境开发显...

    includecmath 评论0 收藏0
  • devpi 快速入门: 上传, 测试, 推送发行版

    摘要:命令配置一个调用,使用在索引上的与兼容的页来寻找和下载包。现在我们切回然后寻找我们的发行文件我们看到被包含在两个索引中,让我们移除的发行版如果你没有指定选项,你将被询问确认删除的交互式操作。 注:该文的原文是 Quickstart: uploading, testing, pushing releases,来自于 devpi 的官方文档。 该快速入门文档将引导你为你的 Pyt...

    fjcgreat 评论0 收藏0
  • 使用新浪云存储搭建Docker私有仓库服务

    摘要:与业务相关的镜像可以使用私有的,提高安全性。其后端存储方案有两个。能不能使用国内存储服务如新浪云存储,做一个私有呢在进一步了解的过程中,笔者了解到实际上服务本身提供机制,可以整合更多的存储服务整合。 最近使用Docker的同学越来越多。 使用Docker的时候需要了解Registry服务 - 即镜像存储服务。 Registry是一个管理Docker镜像的服务,当使用Docker的P...

    taoszu 评论0 收藏0
  • 基于 Python 的 Scrapy 爬虫入门:环境搭建

    摘要:一基础环境由于不是职业的开发者,因此环境是基于的。二安装打开命令行工具创建虚拟环境,默认情况下会创建目录,所有的虚拟环境都会产生一个子目录保存在此,里面包含基本程序文件以及库文件。 目录 基于 Python 的 Scrapy 爬虫入门:环境搭建 基于 Python 的 Scrapy 爬虫入门:页面提取 基于 Python 的 Scrapy 爬虫入门:图片处理 作为一个全栈工程师(...

    Gu_Yan 评论0 收藏0
  • 使用阿里云的Pypi加速你的pip安装速度

    摘要:背景今天在研究阿里云镜像站链接的时候发现有的镜像,感觉可以拿来一用,虽然豆瓣的镜像已经够快了。配置在文件中添加或修改感想阿里云的公共服务也是很良心的,比如最近出的镜像服务。 背景 今天在研究阿里云镜像站链接的时候发现有Pypi的镜像,感觉可以拿来一用,虽然豆瓣的镜像已经够快了。 配置 在~/.pip/pip.conf文件中添加或修改 [global] index-url = http...

    阿罗 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<