获取Django项目使用的python包列表

时间:2011-11-17 16:42:24

标签: python django

有没有简单的方法来获取Django项目使用的python包列表?

我看过蛇食和this question,但似乎都没有在django环境中发挥得很好。

理想情况下,我正在寻找一个命令,我可以从python shell或bash中执行,列出所有不受django原生支持的pypy支持的依赖项。

4 个答案:

答案 0 :(得分:7)

这不是一个完整的答案,但希望它会成为一个合理的起点。

据我所知,django项目的依赖关系(除了django本身及其依赖关系*)包括:

  1. 您的django项目导入的模块
  2. 您的项目通过settings.INSTALLED_APPS(及其相关性)
  3. 加载的应用

    #1项目导入的模块

    您可以使用snakefood发现这一点。

    #2通过settings.INSTALLED_APPS

    加载的应用

    运行以下脚本应该提供INSTALLED_APPS中列出的应用的路径:

    #!/usr/bin/env python
    from settings import INSTALLED_APPS
    from django.utils.importlib import import_module
    import os
    
    app_names = (x for x in INSTALLED_APPS if not x.startswith('django'))
    app_paths = (os.path.dirname(os.path.abspath(import_module(x).__file__)) for x in app_names)    
    print "\n".join(x for x in app_paths if not x.startswith(os.getcwd()))
    

    然后,您可以将其传递给snakefood以发现它们的依赖关系。


    *为了彻底,应该可以从settings发现各种后端(db / cache / auth / etc.),并将相关模块包含在依赖项列表中。

答案 1 :(得分:3)

如果项目使用'pip'来安装依赖项/库,那么这可能很有用:

pip freeze

答案 2 :(得分:1)

在您的django项目中运行此命令,这会将所有已安装的程序包写入Requirements.txt文件中

 pip freeze > requirements.txt

或者如果您使用的是python3,则使用pip3这样的

pip3 freeze > requirements.txt

您将在django项目中找到requirements.txt文件

答案 3 :(得分:0)

pigar对我来说很好。

它没有涵盖INSTALLED_APPS yet,但这只是一些额外的工作。