(对不起,这个有点长,但我想描述一下我的问题以及到目前为止我发现的问题)
我依赖于一些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构建就好了,只要我有:
删除配置文件和互联网连接,例如通过
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
为了解决这个问题,我可以:
python setup.py
egg_info
,建立一个新的tar球并上传新的tarball 为什么这对我不满意?
所以我的问题是,是否有另一种方法可以将配置选项设置为easy_install,或者使pip install忽略egg_info部分,同时仍然将直接要求安装到dh_virtualenv的virtualenv中?
答案 0 :(得分:0)
我找到了解决这个问题的方法。不按我在问题中所要求的那样做,但解决了潜在的问题。
dh_virtualenv提供选项“--preinstall”。使用这个我可以在没有任何网络连接的情况下构建。
所以我将以下内容添加到debian/rules
:
override_dh_virtualenv --preinstall '--requirement=./requirements-preinstall.txt'
/requirements-preinstall.txt包含distutils尝试下载和失败的软件包。不知怎的,如果有多个安装轮次似乎可以解决。