在开发Django Web应用程序时,我列出了需要在virtualenv中安装的软件包。说:
Django==1.3.1
--extra-index-url=http://dist.pinaxproject.com/dev/
Pinax==0.9b1.dev10
git+git://github.com/pinax/pinax-theme-bootstrap.git@cff4f5bbe9f87f0c67ee9ada9aa8ae82978f9890
# and other packages
最初,我在开发过程中一一手动安装它们。这安装了必需的依赖关系,pip freeze
在部署应用程序之前,我终于使用了。
问题是,当我升级某些软件包时,不再使用或不需要某些依赖项,但它们始终由列出pip freeze
。
现在,我想以这种方式设置一个新的virtualenv:
manual-requirements.txt
pip install -r manual-requirement.txt
(←问题,这不会安装依赖项)pip freeze -r manual-requirements.txt > full-requirements.txt
有什么方法可以在不手动将软件包重新安装到新的virtualenv中的情况下获得它们的依赖关系?这很容易出错,我想自动化从不再需要的旧依赖中清除virtualenv的过程。
编辑:实际上,pip 确实安装了未在需求文件中明确列出的依赖项,即使文档告诉我们此类文件是扁平的也是如此。我错了我希望安装的依赖项。我将把这个问题提供给任何对pip不能安装所有依赖项有疑问的人。
鉴于您对问题的评论(您说在其中执行单个软件包的安装符合预期),我建议遍历您的需求文件。在bash中:
#!/bin/sh
while read p; do
pip install $p
done < requirements.pip
HTH!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句