安装失败 requirements.txt 但可以使用 pip install

Install fails with requirements.txt but works with pip install

使用 requirements.txt 与直接使用 pip 安装相比,我看到了一些奇怪的行为。希望你能对此有所了解。

这可能与这个未回答的问题相同:pip install -r requirements.txt fails on scipy, but works when run manually line-by-line

Python 2.7.6

Django 1.6.11

当我像这样使用 requirements.txt 安装 mailchimp3 时:

sudo /usr/local/python/django/bin/pip install -r config/myvr/requirements.txt

安装失败,我看到:

Collecting mailchimp3==2.0.3 (from -r config/myvr/requirements.txt (line 73)) 2016-12-21 11:23:22,286 [salt.loaded.int.module.cmdmod][ERROR ][1759] stderr: /usr/local/python/django/local/lib/python2.7/site-packages/pip/req/req_f ile.py:129: UserWarning: Disabling all use of wheels due to the use of --build-options / --global-options / --install-options. cmdoptions.check_install_build_global(options, opts) /usr/local/python/django/local/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLCon text object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more informati on, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning. InsecurePlatformWarning Could not find a version that satisfies the requirement mailchimp3==2.0.3 (from -r config/myvr/requirements.txt (line 73)) (from versions: ) No matching distribution found for mailchimp3==2.0.3 (from -r config/myvr/requirements.txt (line 73)) 2016-12-21 11:23:22,286 [salt.loaded.int.module.cmdmod][ERROR ][1759] retcode: 1

但是,当我直接安装时是这样的: sudo /usr/local/python/django/bin/pip install mailchimp3==2.0.3

安装成功:

(django)ubuntu@dev:~/myvr$ sudo /usr/local/python/django/bin/pip install mailchimp3==2.0.3 The directory '/home/ubuntu/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. The directory '/home/ubuntu/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. Collecting mailchimp3==2.0.3 /usr/local/python/django/local/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:318: SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/security.html#snimissingwarning. SNIMissingWarning /usr/local/python/django/local/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:122: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/security.html#insecureplatformwarning. InsecurePlatformWarning Downloading mailchimp3-2.0.3-py2.py3-none-any.whl (83kB) 100% |████████████████████████████████| 92kB 413kB/s Requirement already satisfied: requests in /usr/local/python/django/lib/python2.7/site-packages (from mailchimp3==2.0.3) Installing collected packages: mailchimp3 Successfully installed mailchimp3-2.0.3 (django)ubuntu@dev:~/myvr$

这必须使用要求文件安装,而不是直接为我们的生产环境安装。你有没有机会知道这里有什么?

您还需要其他信息吗?

无法查看您的错误消息,但您可以检查您的 requirements.txt 是否包含依赖于同一文件中所列包的包。假设 req 文件包含 pack1 和 pack2,如果稍后调用 pack1 import pack2 和 pack2,则安装将失败。我遇到了问题,这是一个类似的 problem on github

问题是 requirements.txt 文件中存在对 lxml 的依赖关系,并且该依赖关系设置为在没有线程的情况下安装,因此它看起来像这样

lxml==3.5.0 --install-option='--without-threading'

任何时候通过 --install-option(或 --build-options--global-options),将禁用所有轮子。

mailchimp3 的情况下,它需要轮子才能正确安装。

我们的解决方案是将 lxml 的安装移动到单独的构建步骤中。