使用 docker + devpi 搭建本地 pypi 源

前一段時間開發須要常常使用 pip 下載,雖然把 pip 源改爲了國內源,但我對速度仍是不滿意,更爲重要的是集成
測試環境是離線的,要在集成測試環境開發顯然須要搭建本身的本地 pip 源。在使用 devpi 以前我曾使用過 pip2pi,但有個 bug 致使離線環境下的 tox 命令老是失敗,因此最後採用 devpi 搭建 pip 源。這裏使用 docker 部署,方便又快速,若是不當心弄崩了也只須要從新運行 docker 容器就行了。若是你的環境沒有安裝 docker 能夠自行搜素安裝方法,好比 docker 社區的文檔 install docker。若是你是 Centos 用戶,可使用如下方法安裝docker

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

接下來使用使用 docker 部署一個 Python 本地鏡像源,咱們可使用 docker hub 上已有的鏡像,我這裏選擇的是
muccg/devpi 這個鏡像vim

# 設置 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 庫列表bash

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 文件永久使用ui

# 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/

最後,歡迎關注個人殭屍微信公衆號 :) CodeWar 圖片描述url

相關文章
相關標籤/搜索