使用docker+devpi搭建本地pypi源的方法
前一段时间开发需要经常使用pip下载,虽然把pip源改成了国内源,但我对速度还是不满意,更为重要的是集成
测试环境是离线的,要在集成测试环境开发显然需要搭建自己的本地pip源。在使用devpi之前我曾使用过pip2pi,但有个bug导致离线环境下的tox命令总是失败,所以最后采用devpi搭建pip源。这里使用docker部署,方便又快速,如果不小心弄崩了也只需要重新运行docker容器就好了。如果你的环境没有安装docker可以自行搜素安装方法,比如docker社区的文档installdocker。如果你是Centos用户,可以使用以下方法安装
sudoyumupdate sudoyum-yinstalldocker sudosystemctlenabledocker sudosystemctlstartdocker
接下来使用使用docker部署一个Python本地镜像源,我们可以使用dockerhub上已有的镜像,我这里选择的是
muccg/devpi这个镜像
#设置devpi服务器管理员密码 DEVPI_PASSWORD=123 mkdir-p/src/docker/devpi mkdir/tmp/wheelhouse dockerrun-d--namedevpi\ --publish3141:3141\ --volume/tmp/wheelhouse:/wheelhouse --volume/srv/docker/devpi:/data\ --env=DEVPI_PASSWORD=$DEVPI_PASSWORD\ --restartalways\ muccg/docker-devpi
接着先在本地下载好所需的wheel包,requirements.txt文件内容即为我们需要的Python库列表
pipwheel--wheel-dir/tmp/wheelhouse-rrequirements.txt
如果从pip源下载的库已经是wheel包的话文件将会被直接放在/tmp/wheelhouse内,如果是
tar包,pip会先build出wheel包,这可能需要一些时间。下载完成后wheelhouse内容类似
于
ll/tmp/wheelhouse total524K -rwxrwxrwx1rookierookie155KApr623:40certifi-2019.3.9-py2.py3-none-any.whl -rwxrwxrwx1rookierookie131KApr623:40chardet-3.0.4-py2.py3-none-any.whl -rwxrwxrwx1rookierookie58KApr623:40idna-2.8-py2.py3-none-any.whl -rwxrwxrwx1rookierookie57KApr623:40requests-2.21.0-py2.py3-none-any.whl -rwxrwxrwx1rookierookie116KApr623:40urllib3-1.24.1-py2.py3-none-any.whl
下载完成后如果本地环境安装了devpi客户端,可以直接上传wheel包,不过由于我们在创建容器时已经
把wheelhouse文件夹挂载进去,也可以在在容器里直接操作
#进入容器 dockerexec-it-urootdevpibash #登陆并上传 devpiusehttp://:3141/root/public--set-cfg devpiloginroot123 devpiupload--from-dir/wheelhouse
上传完成后可以使用http://
若要临时使用可以使用pipinstall的--index和--trusted-host选项
pipinstall--indexhttp://: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/
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。