有没有简单的方法来获取Django项目使用的python包列表?
我看过蛇食和this question,但似乎都没有在django环境中发挥得很好。
理想情况下,我正在寻找一个命令,我可以从python shell或bash中执行,列出所有不受django原生支持的pypy支持的依赖项。
答案 0 :(得分:7)
这不是一个完整的答案,但希望它会成为一个合理的起点。
据我所知,django项目的依赖关系(除了django本身及其依赖关系*
)包括:
settings.INSTALLED_APPS
(及其相关性)您可以使用snakefood发现这一点。
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)