【问题标题】:Install python wheel file without using pip在不使用 pip 的情况下安装 python wheel 文件
【发布时间】:2016-07-08 00:56:33
【问题描述】:

是否可以不使用pip 来安装 Python 轮子?我总是在使用pip 安装时遇到问题,所以我通常通过复制和粘贴来手动安装库。我想知道是否有办法以类似的方式制作轮文件。

【问题讨论】:

    标签: python pip python-wheel


    【解决方案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//site-packages/)。再一次,做起来很丑陋。
    • “但这确实是个糟糕的做法。”你能详细说明一下吗?
    猜你喜欢
    • 2016-07-01
    • 2021-10-05
    • 2018-06-18
    • 2015-09-25
    • 1970-01-01
    • 2018-03-21
    • 2020-11-14
    • 2023-03-04
    • 1970-01-01
    相关资源
    最近更新 更多