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

Dan*_*ill 9 python django

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

我看过蛇食和这个问题,但似乎都没有在django环境中发挥得很好.

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

Sha*_*hin 7

这不是一个完整的答案,但希望它会成为一个明智的起点.

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

  1. 由django项目导入的模块
  2. 项目通过settings.INSTALLED_APPS(及其依赖项)加载的应用程序

#1项目导入的模块

你可以用蛇食来发现这个.

#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()))
Run Code Online (Sandbox Code Playgroud)

然后,您可以将其传递snakefood给发现它们的依赖项.


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


sta*_*kex 5

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

pip freeze
Run Code Online (Sandbox Code Playgroud)

  • 这只会向您显示已安装的内容,而不是正在*使用的内容*。如果您使用在多个项目之间共享的环境,则尤其成问题。 (7认同)