【问题标题】:How do install packages from a local python package index?如何从本地 python 包索引安装包?
【发布时间】:2018-01-26 10:46:27
【问题描述】:

https://www.python.org/dev/peps/pep-0503https://pip.pypa.io/en/stable/reference/pip_wheel/#cmdoption-i 暗示能够从本地目录安装 python 包,但在实践中这看起来是什么样的并不十分明确。

我是否在本地目录中使用相同的 index.html 文件?对于本地目录,--extra-index-url 的参数是什么样的?

【问题讨论】:

  • 澄清一下,我希望能够使用 requirements.txt 进行安装,例如pip install -r requirements.txt

标签: python pip pypi


【解决方案1】:

如果您有一个希望通过 pip 搜索的发行版目录,您可以简单地包含该目录的路径:

pip install --extra-index-url=/path/to/wheelhouse somepackage

如果您根本不想搜索远程 PyPI,您可以使用 --index-url 而不是 --extra-index-url。请注意,也可以在 requirements.txt 文件的顶部添加 --extra-index-url 和/或 --index-url

使用pip,您还可以直接从本地文件安装发行版。 例如,要安装 copyingmock 发行版:

$ curl https://pypi.python.org/packages/d9/26/5ae8945356634c87cdf099bd7cee57799df46798af90ae5ccb03961c6359/copyingmock-0.1-py2.py3-none-any.whl > copyingmock-0.1-py2.py3-none-any.whl
$ pip install ./copyingmock-0.1-py2.py3-none-any.whl

我已经展示了一个二进制发行版的示例,但同样适用于源发行版 (.tar.gz)。

【讨论】:

    【解决方案2】:

    假设您有 2 个要从本地安装的软件包:abc-xyzfoo,并且您有相应的软件包文件 abc-xzy-1.2.3.tar.gzfoo-1.0.0.tar.gz

    我们会将您的本地 pypi 目录放在/my_local_pypi/simple

    您的目录结构将如下所示:

    /my_local_pypi/simple
      index.html
      - abc-xyz/
         index.html     
         abc-xyz-1.2.3.tar.gz  
      - foo/
         index.html
         foo-1.0.0.tar.gz
    

    每个包的根index.html 需要<a href></a> 锚条目,因此应如下所示:

    $ cat /my_local_pypi/simple/index.html
    <!DOCTYPE html><html><body>
    <a href="abc-xyz">abc-xyz></a></br>
    <a href="foo">foo</a></br>
    </body></html>
    

    然后每个$package/index.html 需要一个指向实际包文件的&lt;a href&gt;&lt;/a&gt; 锚点,所以它们应该如下所示:

    $ cat /my_local_pypi/simple/abc-xyz/index.html
    <!DOCTYPE html><html><body>
    <a href="abc-xyz-1.2.3.tar.gz">abc-xyz-1.2.3.tar.gz</a></br>
    </body></html>
    
    $ cat /my_local_pypi/simple/foo/index.html
    <!DOCTYPE html><html><body>
    <a href="foo-1.0.0.tar.gz">foo-1.0.0.tar.gz</a></br>
    </body></html>
    

    然后在你的requirements.txt,你可以这样做:

    $ cat requirements.txt
    --extra-index-url file:///my_local_pypi/simple/
    abc-xyz==1.2.3
    foo==1.0.0
    

    然后你应该很高兴:pip install -r requirements.txt

    另请参阅piprepo 项目,该项目在生成所需的本地目录结构方面做得非常好。

    【讨论】:

    • 您刚刚回答了自己的问题吗?
    【解决方案3】:

    您不必使用任何index.html 文件。

    运行以下就足够了:

    pip install "path/to/file.whl"

    这将从本地 Wheel 文件安装。

    【讨论】:

    • 你也可以使用 requirements.txt 文件中的路径吗?
    猜你喜欢
    • 2017-07-18
    • 2014-02-17
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    • 2013-01-18
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多