在不使用 pip 的情况下安装 python wheel 文件
Posted
技术标签:
【中文标题】在不使用 pip 的情况下安装 python wheel 文件【英文标题】:Install python wheel file without using pip 【发布时间】:2016-07-08 00:56:33 【问题描述】:是否可以不使用pip
来安装 Python ***?我总是在使用pip
安装时遇到问题,所以我通常通过复制和粘贴来手动安装库。我想知道是否有办法以类似的方式制作轮文件。
【问题讨论】:
【参考方案1】:我假设您可以访问互联网,但您没有安装有效的 pip。
下载点子轮:
wget https://files.pythonhosted.org/packages/0f/74/ecd13431bcc456ed390b44c8a6e917c1820365cbebcb6a8974d1cd045ab4/pip-10.0.1-py2.py3-none-any.whl
要首先找到发布的 url,您可以获取索引 json 端点。例如:
$ curl -s https://pypi.org/pypi/pip/json | jq ".urls[0].url"
"https://files.pythonhosted.org/packages/0f/74/ecd13431bcc456ed390b44c8a6e917c1820365cbebcb6a8974d1cd045ab4/pip-10.0.1-py2.py3-none-any.whl"
对于不编写脚本而只是一次性执行的用户,您可能更愿意使用浏览器简单地下载一个点子轮。在这种情况下,请在此处查找最新的发布文件:https://pypi.org/project/pip/#files
现在你有了一个用于 pip 的***,以及你想要安装的其他***文件。您实际上可以“执行” pip wheel 文件来安装其他 wheel 文件。例如,如果您尝试从 bdist 安装 setuptools v39.0.1,命令将如下所示:
$ python pip-10.0.1-py2.py3-none-any.whl/pip install --no-index setuptools-39.0.1-py2.py3-none-any.whl
Processing ./setuptools-39.0.1-py2.py3-none-any.whl
Installing collected packages: setuptools
Successfully installed setuptools-39.0.1
您现在可以安装 setuptools,即使没有安装 pip。
如果您想知道,是的,您可以使用相同的技巧来安装 pip 本身。该命令如下所示:
python pip-10.0.1-py2.py3-none-any.whl/pip install --no-index pip-10.0.1-py2.py3-none-any.whl
现在你应该有一个工作 pip 安装,与 python
可执行文件指向的任何解释器相关联。
【讨论】:
下载你说的点子轮!但是怎么找呢?那么第二个*** - 用于 setuptools 呢?它们存在,我知道——这就是 cpython 在 ensurepip 中包含的内容。但找到他们?不那么容易恕我直言。没有否决票(甚至可能无法考虑我在这里的地位;)-但恕我直言-只有一半的答案。 @MichaelFelt 好的,我已经添加了有关如何自动从索引中查找下载 url 的说明。 非常感谢!我在找什么! - 除了,似乎我还需要一个新命令(jq)。反正我可以挖。谢谢! 一个方便的方式来下载包的***是使用带有--only-binary=wheel
说明符的pip download
命令,例如pip download --only-binary=wheel pip
.
从 wheel 文件执行命令的技巧真是太棒了。【参考方案2】:
是的。实际上 .whl 文件只是 zip 档案,因此您可以提取它们的内容并使用库路径变量来使其工作。 然而,这确实是一种糟糕的做法。
【讨论】:
使用库路径变量使其工作?能否给出cmd行代码来执行? @Code_10 查看这篇文章leemendelowitz.github.io/blog/… 如果不知道解压到哪里,可以这样看python路径:import sys; print(sys.path)
您也可以简单地将包含内容的文件夹放入默认的python库路径(通常是/lib/以上是关于在不使用 pip 的情况下安装 python wheel 文件的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用pip或conda安装的情况下链接Selenium等库?