存档上的pip install无法安装git依赖项

时间:2017-06-06 13:53:15

标签: python github pip setuptools requirements.txt

我有一个依赖于以下github项目的包:https://github.com/jbittencourt/python-escpos.git(不要与PyPi上存在的python-escpos包混淆)。

因此,在我的软件包的requirements.txt中,我有git+https://github.com/jbittencourt/python-escpos.git#egg=escpos

当我使用pip install -r requirements.txtpython setup.py install(为其install_requires参数解析相同的requirements.txt文件)安装我的软件包时 - 一切都运行良好。

问题在于我将我的包存档到mypackage.tar.gz。归档了一段时间前运行的相同代码,并运行pip install mypackage.tar.gz后,我收到以下错误:

Collecting escpos (from shopic==1.10.0)
  Could not find a version that satisfies the requirement escpos (from shopic==1.10.0) (from versions: )
No matching distribution found for escpos (from shopic==1.10.0)

从玩它开始,我注意到在" #egg =" git+https://github.com/jbittencourt/python-escpos.git#egg=escpos的一部分 - 它只是试图将它从PyPi中取出(在这种情况下失败)。例如。如果我写了(由于一些奇怪的原因)git+https://github.com/jbittencourt/python-escpos.git#egg=requests它会安装requests包。

我不明白为什么它的工作方式不同我所做的就是将文件打包成.tar.gz,而我不知道如何解决它。我不能使用其他安装方法之一,因为我有另一个包具有这个作为其依赖项,并且当我在该包上运行pip install时,它将此tar.gz文件作为其依赖项之一,因此它失败了。

为什么会发生这种情况以及如何解决这个问题?感谢。

修改:这是我的setup.py供参考:

from setuptools import setup, find_packages
import pip

links = []
requires = []

requirements = pip.req.parse_requirements('requirements.txt', session=pip.download.PipSession())

for item in requirements:
    # we want to handle package names and also repo urls
    if getattr(item, 'url', None):  # older pip has url
        links.append(str(item.url))
    if getattr(item, 'link', None): # newer pip has link
        links.append(str(item.link))
    if item.req:
        requires.append(str(item.req))

setup(name='mypackage',
      version='1.1.0',
      description='My Package',
      author='EK',
      author_email='me@example.com',
      url='http://www.example.com',
      license='MIT',
      packages=find_packages(),
      package_data={'': ['*.jar']},
      zip_safe=False,
      install_requires=requires,
      dependency_links=links)

0 个答案:

没有答案