简体   繁体   English

取决于setup.py中的git存储库

[英]Depend on git repository in setup.py

I'm trying to make a project depend on a git dependency. 我正在尝试使项目依赖于git依赖项。 However, I can't seem to get it to work. 但是,我似乎无法让它发挥作用。 What I basically want to achieve is the following, but it doesn't work: 我基本上想要实现的是以下内容,但它不起作用:

#!/usr/bin/env python3
from setuptools import setup


setup(
    name='spam',
    version='0.0.0',
    install_requires=[
        'git+https://github.com/remcohaszing/pywakeonlan.git'
    ])

I tried several variations on the above, such as adding @master or #egg=wakeonlan-0.2.2 , but this doesn't make a difference. 我在上面尝试了几种变体,例如添加@master@master #egg=wakeonlan-0.2.2 ,但这并没有什么区别。

The following works, but only when using the deprecated pip flag, --process-dependency-links : 以下工作,但仅在使用不推荐的pip标志时, - --process-dependency-links

#!/usr/bin/env python3
from setuptools import setup


setup(
    name='spam',
    version='0.0.0',
    install_requires=[
        'wakeonlan'
    ],
    dependency_links=[
        'git+https://github.com/remcohaszing/pywakeonlan.git#egg=wakeonlan-0.2.2'
    ])

This outputs: 这输出:

$ pip install --no-index -e . --process-dependency-links
Obtaining file:///home/remco/Downloads/spam
  DEPRECATION: Dependency Links processing has been deprecated and will be removed in a future release.
Collecting wakeonlan (from spam==0.0.0)
  Cloning https://github.com/remcohaszing/pywakeonlan.git to /tmp/pip-build-mkhpjcjf/wakeonlan
  DEPRECATION: Dependency Links processing has been deprecated and will be removed in a future release.
Installing collected packages: wakeonlan, spam
  Running setup.py install for wakeonlan ... done
  Running setup.py develop for spam
Successfully installed spam wakeonlan-0.2.2

The following does work: 以下工作:

pip install 'git+https://github.com/remcohaszing/pywakeonlan.git'

Also adding the git url in a requirements file just works. 还可以在需求文件中添加git url。

Is there any non deprecated way to depend on a git url using a setup.py file? 是否有任何非弃用的方法依赖于使用setup.py文件的git url?

Pip >= 9.1 (commit 6ec559) will have support for the new @ syntax as described in PEP508 , which takes the format: pkgname@url#sum - eg: Pip> = 9.1 (commit 6ec559)将支持PEP508中描述的新@语法,其格式为: pkgname@url#sum - 例如:

pip install --no-index packaging@https://files.pythonhosted.org/packages/2f/2b/c681de3e1dbcd469537aefb15186b800209aa1f299d933d23b48d85c9d56/packaging-15.3-py2.py3-none-any.whl#sha256=ce1a869fe039fbf7e217df36c4653d1dbe657778b2d41709593a0003584405f4

This will also be useable in setup.py in the same way, eg: 这也可以在setup.py中以相同的方式使用,例如:

install_requires=['packaging@https://files.pythonhosted.org/packages/2f/2b/c681de3e1dbcd469537aefb15186b800209aa1f299d933d23b48d85c9d56/packaging-15.3-py2.py3-none-any.whl#sha256=ce1a869fe039fbf7e217df36c4653d1dbe657778b2d41709593a0003584405f4']

You can try this out just now with the latest commit to pip master (updating pip the 'wrong' way!): 你可以用最新的pip master提交来尝试这个(更新pip'错'的方式!):

$ pip install https://github.com/pypa/pip/archive/master.zip
$ pip install --no-index packaging@https://files.pythonhosted.org/packages/2f/2b/c681de3e1dbcd469537aefb15186b800209aa1f299d933d23b48d85c9d56/packaging-15.3-py2.py3-none-any.whl#sha256=ce1a869fe039fbf7e217df36c4653d1dbe657778b2d41709593a0003584405f4
Collecting packaging@ https://files.pythonhosted.org/packages/2f/2b/c681de3e1dbcd469537aefb15186b800209aa1f299d933d23b48d85c9d56/packaging-15.3-py2.py3-none-any.whl#sha256=ce1a869fe039fbf7e217df36c4653d1dbe657778b2d41709593a0003584405f4 
from https://files.pythonhosted.org/packages/2f/2b/c681de3e1dbcd469537aefb15186b800209aa1f299d933d23b48d85c9d56/packaging-15.3-py2.py3-none-any.whl#sha256=ce1a869fe039fbf7e217df36c4653d1dbe657778b2d41709593a0003584405f4
Downloading https://files.pythonhosted.org/packages/2f/2b/c681de3e1dbcd469537aefb15186b800209aa1f299d933d23b48d85c9d56/packaging-15.3-py2.py3-none-any.whl
Installing collected packages: packaging
Successfully installed packaging-15.3

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM