总是有奇奇怪怪的需求,比如说我现在有个离线的环境,我竟然异想天开通过
python setup.py install
去安装一些第三方包
当我敲了回车键的时候才发现我竟然发现没有 setuptools
,我才惊奇的发现竟然在一个离线的环境 Downloading https//:pypi.io/packages/source/s/setuptools/setuptools-20.6.7.zip
下载 setuptools
,这当然是行不通的
安装准备
① 复制 ez_setup.py
的内容并保存到本地
https://bootstrap.pypa.io/ez_setup.py
② 下载 setuptools-20.6.7.zip
到本地
https://pypi.io/packages/source/s/setuptools/setuptools-20.6.7.zip
为什么要这么做
在 ez_setup.py
中,逻辑实现为:在当前目录下查找是否包含某个版本的 setuptools-%s.zip
的文件,如果没有就拼接一个地址下载该文件,下载后解压并安装
我们需要做的是:更改下载的逻辑,并将 zip
文件放在当前目录下,跳过下载的步骤,假装我们已经下载好了文件
怎么做
① 更改 ez_setup.py
中的 download_setuptools
函数的逻辑
def download_setuptools(
version=DEFAULT_VERSION, download_base=DEFAULT_URL,
to_dir=DEFAULT_SAVE_DIR, delay=15,
downloader_factory=get_best_downloader)
# making sure we use the absolute path
to_dir = os.path.abspath(to_dir)
# 此处做了修改,指定了zip文件
zip_name = "setuptools-20.6.7.zip"
# 此处在拼接文件下载地址
url = download_base + zip_name
saveto = os.path.join(to_dir, zip_name)
if not os.path.exists(saveto): # Avoid repeated downloads
log.warn("Downloading %s", url)
downloader = downloader_factory()
downloader(url, saveto)
return os.path.realpath(saveto)
② 将 setuptools-%s.zip
文件和 ez_setup.py
文件放在同一目录下,执行该命令,大功告成
python ez_setup.py