如何在pip冻结的需求文件中维护pip安装选项?

时间:2012-01-16 00:29:29

标签: python pip

我使用pip requirements file来维护项目的依赖项列表。

我现在发现自己必须使用pip install --install-option='some-setup.py.option' 安装库但是 pip freeze不会在输出中记录这些选项,而是保存在项目的{{1}中}。这会导致问题,因为新机器上的简单requirements.txt会安装所有依赖项,而不会为这个库提供所需的参数,而且我已经失去了简单的往返操作。

所以,我的2部分问题是:

  • 有没有办法以某种方式在pip冻结输出中维护pip安装选项?
  • 如果没有,有没有办法手动破解需求文件以添加安装选项?如果必须的话,我可以失去pip install -r requirements.txt的往返性质,并切换到需求文件的手动维护。我检查了documentation,但看不到任何帮助。

不必要但可能有趣的详情请点击

我想安装pymongowithout building the C extension,因此我可以在基于eventlet的应用中异步使用它。

根据需要安装并构建requirements.txt:

pip freeze

在新的virtualenv中,尝试从(test)day@office:~/test$ pip install pymongo --install-option='--no_ext' Downloading/unpacking pymongo Downloading pymongo-2.1.1.tar.gz (199Kb): 199Kb downloaded Running setup.py egg_info for package pymongo Installing collected packages: pymongo Running setup.py install for pymongo Successfully installed pymongo Cleaning up... (test)day@office:~/test$ pip freeze > requirements.txt (test)day@office:~/test$ cat requirements.txt bottle==0.10.7 distribute==0.6.10 eventlet==0.9.16 greenlet==0.3.3 lxml==2.3.3 pymongo==2.1.1 simplejson==2.3.2 wsgiref==0.1.2 安装相同的项目。 pip为pymongo requirements.txt

构建C扩展
:(

更新 Issue 271于2011年4月针对pip开放,要求能够在requirements.txt中指定每行(test2)day@office:~/test2$ pip install -r requirements.txt ... Downloading/unpacking pymongo==2.1.1 (from -r requirements.txt (line 6)) Downloading pymongo-2.1.1.tar.gz (199Kb): 199Kb downloaded Running setup.py egg_info for package pymongo Installing collected packages: pymongo Running setup.py install for pymongo building 'bson._cbson' extension gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Ibson -I/usr/include/python2.6 -c bson/_cbsonmodule.c -o build/temp.linux-i686-2.6/bson/_cbsonmodule.o ... Successfully installed pymongo Cleaning up... 。如果您遇到同样的问题,请投票支持该问题。

2 个答案:

答案 0 :(得分:14)

自7.0版(发布2015-05-21)以来,pip能够从需求文件中解析--install-option--global-option。现在应该可以在requirements.txt中添加以下行:

pymongo==2.1.1 --install-option='--no_ext'

可以找到更多信息herehere

答案 1 :(得分:5)

这可能太天真了,但是如果您可以手动管理需求和相应的选项 - 为什么不将它们保存为包含整个pip咒语的小shell脚本?只是一个解决方法,直到听取功能请求:)