如何解決 Linux 實例 pip 操作時的超時問題
pip 是當前最流行的 Python 安裝包管理工具之一,很多阿里云用戶會通過 pip 更新系統(tǒng)源。阿里云的 pip 源地址有以下三處:
(默認)公網(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 實例的 pip 請求偶有超時或者失敗現(xiàn)象。目前,受影響的公共鏡像有:
CentOS
Debian
Ubuntu
SUSE
OpenSUSE
Aliyun Linux
原因分析
pip 請求的默認訪問地址為 mirrors.aliyun.com,要求訪問該地址的實例能訪問公網(wǎng)。當您的實例沒有分配公網(wǎng) IP 時,會出現(xiàn) pip 請求超時故障。
解決方法
您可以使用以下方法中的任意一種解決問題。
方法一
為您的實例分配公網(wǎng) IP,即為實例綁定一個 彈性公網(wǎng) IP(EIP)。預(yù)付費實例還可以通過 升降配 重新分配公網(wǎng) IP。
方法二
一旦出現(xiàn) pip 響應(yīng)延遲,您可以在 ECS 實例中運行腳本 fix_pypi.sh,然后再重試 pip 操作。
遠程連接實例。
運行 wget http://image-offline.oss-cn-hangzhou.aliyuncs.com/fix/fix_pypi.sh 獲取文件。
運行腳本:
VPC 實例:運行 bash fix_pypi.sh "mirrors.cloud.aliyuncs.com"。
經(jīng)典網(wǎng)絡(luò)實例:運行 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
以上就是本篇文章的全部內(nèi)容知識點,感謝大家對腳本之家的支持。