如何维护Pip冻结所生成的需求文件中的pip安装选项?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

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

所以,我的问题是:

  • 有没有办法在某种程度上保持pip冻结输出中的pip安装选项?
  • 如果没有,是否有办法手动破解需求文件以添加安装选项?如果必须pip freeze,我会丢失往返性质,并切换到需求文件的手动维护。我检查了文档,但看不到任何帮助。

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

(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

在新的virtualenv中,尝试从中安装相同的项目requirements.txt。pip为pymongo构建C扩展:(

(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...
提问于
用户回答回答于

由于7.0版,PIP具有解析能力--install-option--global-option从需求的文件。现在应该可以在你的下面有一行requirements.txt

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

更多信息可以在这里这里找到。

用户回答回答于

这可能太天真了,但如果你手动管理需求和相应的选项,那么为什么不把它们作为一个包含整个pip咒语的小型shell脚本来维护?只是一个解决办法,直到功能请求被监听。

所属标签

可能回答问题的人

  • 天使的炫翼

    17 粉丝531 提问36 回答
  • 富有想象力的人

    3 粉丝0 提问30 回答
  • 学生

    3 粉丝476 提问28 回答
  • o o

    4 粉丝494 提问27 回答

扫码关注云+社区

领取腾讯云代金券