我正在开发一个Django网站应用,我有一个需要在虚拟环境中安装的包列表。例如:
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
列出。
现在,我想这样设置新的虚拟环境:
- 将所需的软件包(不包括它们的依赖项)放入要求文件中,
例如manual-requirements.txt
- 安装它们和它们的依赖项
pip install -r manual-requirement.txt
(←问题,这不安装依赖关系) - 冻结完整的虚拟环境
pip freeze -r manual-requirements.txt > full-requirements.txt
并部署。
是否有任何方法可以无需手动在新虚拟环境中重新安装软件包以获取其依赖关系? 这将存在错误风险,而我希望自动化清理虚拟环境中不再需要的旧依赖项的过程。
编辑:实际上,pip确实安装未在要求文件中显式列出的依赖项,即使文档告诉我们这样的文件是平面的。 我对期望安装的依赖关系有所错误。 我将此问题留给怀疑pip是否安装所有依赖项的任何人。
pip install django; pip install pinax;
等操作,则会安装它们。 - Maxime R.