如何解決 Linux 實(shí)例 pip 操作時(shí)的超時(shí)問(wèn)題
pip 是當(dāng)前最流行的 Python 安裝包管理工具之一,很多阿里云用戶會(huì)通過(guò) pip 更新系統(tǒng)源。阿里云的 pip 源地址有以下三處:
(默認(rèn))公網(wǎng):mirrors.aliyun.com
專有網(wǎng)絡(luò) VPC 內(nèi)網(wǎng):mirrors.cloud.aliyuncs.com
經(jīng)典網(wǎng)絡(luò)內(nèi)網(wǎng):mirrors.aliyuncs.com
現(xiàn)象描述
Linux 實(shí)例的 pip 請(qǐng)求偶有超時(shí)或者失敗現(xiàn)象。目前,受影響的公共鏡像有:
CentOS
Debian
Ubuntu
SUSE
OpenSUSE
Aliyun Linux
原因分析
pip 請(qǐng)求的默認(rèn)訪問(wèn)地址為 mirrors.aliyun.com,要求訪問(wèn)該地址的實(shí)例能訪問(wèn)公網(wǎng)。當(dāng)您的實(shí)例沒(méi)有分配公網(wǎng) IP 時(shí),會(huì)出現(xiàn) pip 請(qǐng)求超時(shí)故障。
解決方法
您可以使用以下方法中的任意一種解決問(wèn)題。
方法一
為您的實(shí)例分配公網(wǎng) IP,即為實(shí)例綁定一個(gè) 彈性公網(wǎng) IP(EIP)。預(yù)付費(fèi)實(shí)例還可以通過(guò) 升降配 重新分配公網(wǎng) IP。
方法二
一旦出現(xiàn) pip 響應(yīng)延遲,您可以在 ECS 實(shí)例中運(yùn)行腳本 fix_pypi.sh,然后再重試 pip 操作。
遠(yuǎn)程連接實(shí)例。
運(yùn)行 wget http://image-offline.oss-cn-hangzhou.aliyuncs.com/fix/fix_pypi.sh 獲取文件。
運(yùn)行腳本:
VPC 實(shí)例:運(yùn)行 bash fix_pypi.sh "mirrors.cloud.aliyuncs.com"。
經(jīng)典網(wǎng)絡(luò)實(shí)例:運(yùn)行 bash fix_pypi.sh "mirrors.aliyuncs.com"。
重試 pip 操作。
以下為 fix_pypi.sh 的腳本內(nèi)容:
#!/bin/bash
function config_pip() {
pypi_source=$1
if [[ ! -f ~/.pydistutils.cfg ]]; then
cat > ~/.pydistutils.cfg << EOF
[easy_install]
index-url=http://$pypi_source/pypi/simple/
EOF
else
sed -i "s#index-url.*#index-url=http://$pypi_source/pypi/simple/#" ~/.pydistutils.cfg
fi
if [[ ! -f ~/.pip/pip.conf ]]; then
mkdir -p ~/.pip
cat > ~/.pip/pip.conf << EOF
[global]
index-url=http://$pypi_source/pypi/simple/
[install]
trusted-host=$pypi_source
EOF
else
sed -i "s#index-url.*#index-url=http://$pypi_source/pypi/simple/#" ~/.pip/pip.conf
sed -i "s#trusted-host.*#trusted-host=$pypi_source#" ~/.pip/pip.conf
fi
}
config_pip $1
以上就是本篇文章的全部?jī)?nèi)容知識(shí)點(diǎn),感謝大家對(duì)腳本之家的支持。