我需要离线安装 PyInstaller。我已经有 setuptools,但它仍然试图下载它。我做错了什么?如果是因为--ignore-installed
pip 命令,我该如何关闭它?
C:\Users\[user]\Desktop\software\pybaries3>pip install C:\Users\[user]\Desktop\software\pybaries3\PyInstaller-3.6
Processing c:\users\[user]\desktop\software\pybaries3\pyinstaller-3.6
Installing build dependencies ... error
Complete output from command c:\users\[user]\appdata\local\programs\python\python36-32\python.exe -m pip install --ignore-installed --no-user --prefix C:\Users\[user]\AppData\Local\Temp\pip-build-env-2m5pzlvw --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- setuptools>=38.2.5 wheel:
Collecting setuptools>=38.2.5
Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x02F69A10>: Failed to establish a new connection: [Errno 11004] getaddrinfo failed',)': /simple/setuptools/
Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x02F69AD0>: Failed to establish a new connection: [Errno 11004] getaddrinfo failed',)': /simple/setuptools/
Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x02F69A90>: Failed to establish a new connection: [Errno 11004] getaddrinfo failed',)': /simple/setuptools/
Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x02F69B10>: Failed to establish a new connection: [Errno 11004] getaddrinfo failed',)': /simple/setuptools/
Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x02F69BD0>: Failed to establish a new connection: [Errno 11004] getaddrinfo failed',)': /simple/setuptools/
Could not find a version that satisfies the requirement setuptools>=38.2.5 (from versions: )
No matching distribution found for setuptools>=38.2.5
----------------------------------------
Command "c:\users\[user]\appdata\local\programs\python\python36-32\python.exe -m pip install --ignore-installed --no-user --prefix C:\Users\[user]\AppData\Local\Temp\pip-build-env-2m5pzlvw --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- setuptools>=38.2.5 wheel" failed with error code 1 in None
C:\Users\[user]\Desktop\software\pybaries3>pip list
Package Version
-------------- -------
pip 18.1
pywin32-ctypes 0.2.0
setuptools 40.6.2
C:\Users\[user]\Desktop\software\pybaries3>
答案1
我需要离线安装 PyInstaller。
先决条件
下载安装 PyInstaller 所需的所有相关模块的副本。pip
通常联系Python 包索引(PyPI)来收集这些文件,但你可以自己手动收集它们。这些包括:
就您而言,您可能可以跳过 PyInstaller、setuptools 和 pywin32-ctypes,但您可能仍需要至少 future、altgraph 和 pefile 的副本。还请注意,尽管您的 setuptools 版本可能可以工作,但它不是最新的。
如果您不想从各自的 PyPI 页面(链接)单独下载上述必要的文件,您可以简单地使用例如:
pip download pyinstaller
从具有并能够连接到 PyPI 的 PCpip
上下载,以便在本地保存 PyInstaller 及其依赖项。然后,您可以根据需要将这些文件传输到离线计算机。
请注意,虽然通常最好使用与离线机器上使用的相同版本的 Python 相关联的download
副本来模块pip
,但在这种情况下它应该不那么重要(只要您不使用 Python 2),因为上面的特定文件目前都应该与大多数版本的 Python 3 兼容。
安装
在离线机器上,将上面下载的所有文件放入同一个文件夹中,例如:
C:\Users\[user]\Desktop\software\pybaries3
然后pip
使用--no-use-pep517
、--no-index
和--find-links
选项运行,例如:
pip install --no-use-pep517 --no-index --find-links C:\Users\[user]\Desktop\software\pybaries3 C:\Users\[user]\Desktop\software\pybaries3\PyInstaller-3.6.tar.gz
不要忘记将tar.gz
PyInstaller 的 eg 文件扩展名包含在内(因此使用 ex. PyInstaller-3.6.tar.gz
,而不仅仅是PyInstaller-3.6
)。
您可以阅读更多关于这些的内容pip 安装选项以及更一般的关于PEP 517在给出的相应链接中,但作为快速摘要:
--不使用-pep517绕过pip 和 PyInstaller 的问题当前工作目录中的模块安装失败。
--无索引确保只有指定的位置--find-links用于安装模块(因此在这种情况下,只是例如
C:\Users\[user]\Desktop\software\pybaries3
,而不是任何在线资源,如PyPI)。
答案2
用于--no-build-isolation
防止 pip 插入---ignore-installed
。如果缺少任何依赖项,安装仍然会失败。如果您需要帮助获取离线使用的软件包,请参阅@anaksunaman 的回答。