无网络环境下安装PyInstaller遇setuptools报错的解决方法
解决无网环境下安装PyInstaller时setuptools依赖报错的问题
我来帮你搞定这个问题!你遇到的情况其实是pip的构建隔离机制在搞鬼——当你从源码压缩包(PyInstaller-3.5.tar.gz)安装软件时,pip默认会创建一个完全隔离的临时环境来构建安装包,这个环境不会继承你现有venv里已安装的setuptools和其他依赖,所以它会试图去PyPI下载满足>=40.2.0要求的setuptools,而你处于无网环境,自然就超时失败了。
下面给你两个可行的解决方案:
方案一:禁用pip的构建隔离
直接让pip使用当前venv里已有的依赖来构建安装PyInstaller,执行以下命令即可:
pip install --no-build-isolation PyInstaller-3.5.tar.gz
这个参数会告诉pip跳过隔离环境的创建,直接复用你venv里已安装的setuptools 40.6.3(它完全满足>=40.2.0的要求)和其他依赖,这样就不会再去联网下载了。
方案二:提前构建PyInstaller的wheel包(更推荐)
如果你有机会在有网环境操作的话,可以先把PyInstaller源码打包成wheel格式(预构建的安装包,不需要再编译构建),步骤如下:
- 在有网环境下,下载PyInstaller源码包后,执行:
这会生成一个类似pip wheel PyInstaller-3.5.tar.gzPyInstaller-3.5-py2.py3-none-any.whl的文件。 - 将这个whl文件传到你的无网环境venv中,直接执行安装命令:
wheel包是预构建好的,不需要再依赖构建环境,安装过程更顺畅,也不会触发联网请求。pip install PyInstaller-3.5-py2.py3-none-any.whl
额外注意
如果用方案一的时候提示缺少wheel依赖,你需要先提前在venv中安装wheel的whl包(同样从有网环境下载好传到无网环境),安装命令:pip install wheel-xxx.whl。
内容的提问来源于stack exchange,提问作者codeuser
相关产品推荐
相关产品推荐

