如何在ph install中使用本地存储库,以便在dh_virtualenv

时间:2018-04-03 18:35:50

标签: python pip debian virtualenv

(对不起,这个有点长,但我想描述一下我的问题以及到目前为止我发现的问题)

我依赖于一些python包(jira,PyNaCl)。这些使用setup_requires,我似乎无法用dh_virtualenv控制。 我的问题是我必须使用本地mini-buildd从源代码构建整个东西。 构建时我与PyPi.python.org没有关联,而且我没有本地代理。 如果我可以控制easy_install,我可以尝试将它指向我的本地存储库,我将其包含在我的debian源包中。

但这是我的问题所在: setup_requires(distutils)忽略我传递给本地存储库的pip的参数。(请参阅pip.pypa.io。 Mini-buildd为每个版本构建了一个全新的chroot,因此我不知道如何为Distutils Configuration Files中的任何一个添加额外的行。 如果没有这个,我最终会收到如下错误消息:

Running setup.py (path:/tmp/pip-build-vSvelX/PyNaCl/setup.py) egg_info for package PyNaCl
Running command python setup.py egg_info
Download error on https://pypi.python.org/simple/cffi/: [Errno 110] Connection timed out -- Some packages may not be found!
Couldn't find index page for 'cffi' (maybe misspelled?)

那么到目前为止我设法建立了什么?

本地存储库(./requirements)w 我的软件包所依赖的所有tar.gz文件(pip freeze,pip download --no- binary:all :) 包含在debian源包中。

pip install -vvv --isolated--ignore-installed --no-cache-dir --no-deps --no-index --find-links=./requirements -r requirements.txt

在一个新的virtualenv构建就好了,只要我有:

  • 与pypi的连接。
  • Distutils的工作配置文件

删除配置文件和互联网连接,例如通过

export HTTPS_PROXY=invalid; export http_proxy=invalid

上面的pip命令将中止一条消息,如:

Running setup.py (path:/tmp/pip-build-88bVhg/PyNaCl/setup.py) egg_info for package PyNaCl
Running command python setup.py egg_info
Download error on https://pypi.python.org/simple/pycparser/: [Errno -3] Temporary failure in name resolution -- Some packages may not be found!
Couldn't find index page for 'pycparser' (maybe misspelled?)
Download error on https://pypi.python.org/simple/: [Errno -3] Temporary failure in name resolution -- Some packages may not be found!
No local packages or working download links found for pycparser

为了解决这个问题,我可以:

  1. 进入破碎的焦油球,执行python setup.py egg_info,建立一个新的tar球并上传新的tarball
  2. 添加包含an的$ HOME / .pydistutils.cfg easy_install配置。
  3. 为什么这对我不满意?

    1. 在相应的tarball中构建egg.info意味着我必须触摸我不维护的软件包,并且更新可能会很有趣"
    2. 使用配置文件似乎不适合我,因为:
      • python目录在构建过程中设置为新鲜
      • 我在mini-buildd
      • 上没有主页目录
      • 要修改setup.cfg,我必须掌握我的主程序包最终的高级知识。而且我必须操纵外国包裹。
    3. 无法选择在构建时获取PyPi缓存或镜像的网络连接
    4. 所以我的问题是,是否有另一种方法可以将配置选项设置为easy_install,或者使pip install忽略egg_info部分,同时仍然将直接要求安装到dh_virtualenv的virtualenv中?

1 个答案:

答案 0 :(得分:0)

我找到了解决这个问题的方法。不按我在问题中所要求的那样做,但解决了潜在的问题。

dh_virtualenv提供选项“--preinstall”。使用这个我可以在没有任何网络连接的情况下构建。

所以我将以下内容添加到debian/rules

override_dh_virtualenv --preinstall '--requirement=./requirements-preinstall.txt'

/requirements-preinstall.txt包含distutils尝试下载和失败的软件包。不知怎的,如果有多个安装轮次似乎可以解决。