測(cè)試環(huán)境是離線的,要在集成測(cè)試環(huán)境開(kāi)發(fā)顯然需要搭建自己的本地 pip源。在使用 devpi 之前我曾使用過(guò) pip2pi,但有個(gè) bug 導(dǎo)致離線環(huán)境下的 tox 命令總是失敗,所以最后采用 devpi 搭建 pip源。這里使用 docker 部署,方便又快速,如果不小心弄崩了也只需要重新運(yùn)行docker容器就好了。如果你的環(huán)境沒(méi)有安裝 docker 可以自行搜素安裝方法,比如 docker 社區(qū)的文檔 install docker(https://docs.docker.com/install/)。如果你是 Centos 用戶,可以使用以下方法安裝
sudo yum update sudo yum -y install docker sudo systemctl enable docker sudo systemctl start docker
接下來(lái)使用使用 docker 部署一個(gè) Python 本地鏡像源,我們可以使用 docker hub 上已有的鏡像,我這里選擇的是
muccg/devpi(https://hub.docker.com/r/muccg/devpi) 這個(gè)鏡像
# 設(shè)置 devpi 服務(wù)器管理員密碼 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文件內(nèi)容即為我們需要的 Python 庫(kù)列表
pip wheel --wheel-dir /tmp/wheelhouse -r requirements.txt
如果從 pip 源下載的庫(kù)已經(jīng)是 wheel 包的話文件將會(huì)被直接放在 /tmp/wheelhouse 內(nèi),如果是
tar 包,pip 會(huì)先 build 出 wheel 包,這可能需要一些時(shí)間。下載完成后 wheelhouse 內(nèi)容類(lèi)似
于
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
下載完成后如果本地環(huán)境安裝了devpi客戶端,可以直接上傳 wheel 包,不過(guò)由于我們?cè)趧?chuàng)建容器時(shí)已經(jīng)
把 wheelhouse
文件夾掛載進(jìn)去,也可以在在容器里直接操作
# 進(jìn)入容器 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 本地源服務(wù)器狀態(tài)。
若要臨時(shí)使用可以使用 pip install 的 –index 和 –trusted-host 選項(xiàng)
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/