ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
> 正常pyenv 安装 Python的时候,可以通过添加 `-v` 参数来查看具体的安装过程 --- 正常的安装过程是: 从官网下载对应的版本压缩包到`/tmp/目录`, 然后在`/tmp/目录` 执行编译安装, 最终是安装到`~/.pyenv/versions/`下面 比如: ``` root@pts/2 $ pyenv install 3.4.4 `[-v]` Downloading Python-3.4.4.tgz... -> https://www.python.org/ftp/python/3.4.4/Python-3.4.4.tgz Installing Python-3.4.4... Installed Python-3.4.4 to /root/.pyenv/versions/3.4.4 ``` ### cache 但是有个问题是有时候从官网下载tgz 包很慢,在不同的主机安装的时候都重新现在就是个很头疼的问题,这个时候 `./pyenv/cache` 目录就能发挥它的作用 + 提前从官网下载需要安装的包 + copy到 `./pyenv/cache` 中 + 执行 `pyenv install version-number -v` 上面的version-number就是具体待安装的包的版本号, -v 展示安装过程 如果安装上面的操作执行就会省去下载的过程,直接执行 编译安装 ,会快很多。 其实上面的安装就是采用的这中 ### cache 不生效 实际操作中发现,把下载的Python包放到了 cache 目录,但是还是去执行了下载过程。 添加 -v 参数安装的时候看到下载的文件名字是 'Python-3.4.4.tgz',如果 把这个文件名copy到 `~/.pyenv/cache/` 下面的是不起作用的,还是会继续 重新下载。 查找问题后发现,-v 显示的是下载 'Python-3.4.4.tgz', 但是 在/tmp/python-xxxxxx.xxxx/ 目录下面却显示的是 'Python-3.4.4.tar.gz' 文件。 ``` root@pts/0 $ ls -l /tmp/python-build.20160608161435.16831 total 2960 -rw-r--r-- 1 root root 3031040 Jun 8 16:14 Python-3.4.4.tar.gz ``` 所以把下载的 'Python-3.4.4.tgz' 改名为 'Python-3.4.4.tar.gz' 后放到 `~/.pyenv/cache/` 下面后,然后 pyenv install 3.4.4 -v 就不会重新下载了。 ``` root@pts/0 $ cp -a Python-3.4.4.tgz ~/.pyenv/cache/Python-3.4.4.tar.gz root@pts/0 $ pyenv install 3.4.4 -v /tmp/python-build.20160608164944.31714 /tmp /tmp/python-build.20160608164944.31714/Python-3.4.4 /tmp/python-build.20160608164944.31714 /tmp Installing Python-3.4.4... configure: WARNING: unrecognized options: --enable-unicode checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking for --enable-universalsdk... no checking for --with-universal-archs... no ... ... Ignoring indexes: https://pypi.python.org/simple Collecting setuptools Collecting pip Installing collected packages: setuptools, pip Successfully installed pip-7.1.2 setuptools-18.2 /tmp/python-build.20160608161532.16979 /tmp /tmp Installed Python-3.4.4 to /root/.pyenv/versions/3.4.4 ``` 从这里看到这次安装没有重新下载,调用了 cache中的文件,最终安装成功 ``` 注意: 不能采用把 Python-3.4.4.tgz 解压之后才压缩成 Python-3.4.4.tar.gz 的方式, 因为这样的话会导致源文件的md5值发生变化。而校验失败重新下载 ```