获取Django项目使用的Python包列表
有没有简单的方法可以获取一个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本身和它的依赖项*
)主要包括:
- 你在Django项目中导入的模块
- 通过
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
中找到各种后端(数据库/缓存/认证等),并把相关模块也加入到你的依赖列表中。