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

18 投票
4 回答
15169 浏览
提问于 2025-04-17 06:31

有没有简单的方法可以获取一个Django项目中使用的Python包的列表?

我看过snakefood和这个问题,但这两个工具在Django环境中似乎都不太好用。

我希望能找到一个命令,可以在Python的命令行或者bash中执行,来列出所有不属于Django的、由pypy支持的依赖包。

4 个回答

3

在你的Django项目里运行这个命令,这样会把所有安装的包写进一个叫requirements.txt的文件里。

 pip freeze > requirements.txt

如果你使用的是python3,那就用pip3,像这样操作:

pip3 freeze > requirements.txt

你会在你的Django项目里找到requirements.txt这个文件。

7

也许这对你有用,特别是如果这个项目是用 'pip' 来安装依赖库的话:

pip freeze
7

这不是一个完整的答案,但希望能给你一个合理的起点。

根据我的了解,一个Django项目的依赖项(除了Django本身和它的依赖项*)主要包括:

  1. 你在Django项目中导入的模块
  2. 通过settings.INSTALLED_APPS加载的应用程序(以及它们的依赖项)

#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中找到各种后端(数据库/缓存/认证等),并把相关模块也加入到你的依赖列表中。

撰写回答