告诉pip安装需求文件中列出的包的依赖项。

21 浏览
0 Comments

告诉pip安装需求文件中列出的包的依赖项。

我正在开发一个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
# 和其他软件包

最初,我手动逐个安装它们,随着开发的进行,这样安装了所需的依赖项,最后在部署应用程序之前使用pip freeze

问题是,当我升级一些软件包时,有些依赖项不再被使用或需要,但它们仍然在pip freeze中列出。

现在,我想以以下方式设置一个新的虚拟环境:

  • 将所需的软件包(不包括它们的依赖项)放入一个需求文件中,

    manual-requirements.txt

  • 安装它们及其依赖项

    pip install -r manual-requirement.txt(←问题是,这不会安装依赖项)

  • 冻结完整的虚拟环境

    pip freeze -r manual-requirements.txt > full-requirements.txt

    然后部署。

有没有办法在不手动重新安装软件包以获取它们的依赖项的情况下完成这个过程?这将容易出错,我希望自动化清理虚拟环境中不再需要的旧依赖项的过程。

编辑:实际上,pip确实会安装在需求文件中没有明确列出的依赖项,即使文档告诉我们这些文件是扁平的。我对我期望安装的依赖项有所错误。对于那些对pip是否安装所有依赖项有疑问的人,我将保留这个问题。

0