强制pip跳过或忽略下载缓存中的坏哈希
想知道有没有人知道一个解决办法,可以让pip在从下载缓存安装时,要么完全跳过哈希检查,要么忽略错误的哈希值?安装命令是:
pip.exe install --target=C:\WHERE_I_WANT_INSTALLED --download-cache=C:\MY_DL_CACHE mitmproxy
Mitmproxy需要一个特定版本的pillow,而在这个特定版本中,恰好有一个定义的C函数,它的签名和Mingw x86_64中的一个包含文件里的另一个函数发生了冲突。我不打算更换我的工具链,因为使用mingw在Windows上,大家都知道,找到并保持一个稳定版本是个非常麻烦的过程。
总之,我已经在pip的GitHub上把这个问题作为bug报告发了,但我想在这里也问问。提前谢谢大家。
1 个回答
2
我在最后一个我绝对不会想到的地方找到了答案:文档。
简单来说,你需要运行几个命令,让pip下载你想安装的东西所需的一切。在这个例子中,我要安装的是mitmproxy。首先,我获取了mitmproxy的requirements.txt文件,然后把它放到一个文件夹里。下载包的命令是:
pip install --download C:\MY_SECRET_PATH\mitm\dl-cache six
pip install --download C:\MY_SECRET_PATH\mitm\dl-cache mock
pip install --download C:\MY_SECRET_PATH\mitm\dl-cache itsdangerous
pip install --download C:\MY_SECRET_PATH\mitm\dl-cache cryptography
pip install --download C:\MY_SECRET_PATH\mitm\dl-cache mitmproxy
现在,mitmproxy所需的一切都存放在指定的路径下。接着,我们需要把这个路径和其他一些参数提供给命令,以安装我们想要的mitmproxy。为了让事情更有趣,我把所有这些东西安装在一个自定义的文件夹里。所以命令如下:
pip.exe install mitmproxy --no-index --target=C:\MY_SECRET_PATH\mitm --find-links=C:\MY_SECRET_PATH\mitm
基本上,我们是在告诉pip离线安装选定的包及其所有依赖,不检查pypy,因此跳过了哈希检查。这样,你就可以自由修改你下载的包的源代码,就像我做的那样。