Virtualenv - 清理未使用的包安装

Virtualenv - Cleaning up unused package installations

所以在过去的几个月里,我一直在开发我的第一个 django web 应用程序,我已经安装了一些我想尝试使用的软件包来解决我的一些问题。但是,我安装、尝试使用的其中一些软件包失败了,然后再也没有卸载过。

有没有办法从 "pip freeze" 给出的列表中查看我的应用程序正在使用哪些包?

这样我就可以卸载应用程序中的一些杂乱内容。有这种混乱是不是一个巨大的缺点?

在以后的开发中,如果我不使用它们,我会立即卸载它们。所以吸取教训:).

我使用的一种方法是使用我的 requirements.txt 文件。从我的 Django 项目的根目录,我创建了一个 requirements/ 目录,其中包含以下文件:

requirements/
    base.txt
    dev.txt
    prod.txt
    temp.txt

base.txt 包含要在所有环境中使用的软件包,例如 Django==1.8.6.

然后 dev 将包含基础包和其他包,可能如下所示:

-r base.txt
coverage==4.0.2

然后 temp.txt 包含 dev.txt 并包含我不确定是否会永久使用的软件包:

-r dev.txt
temp_package==1.0
git+https://github.com/django/django.git#1014ba026e879e56e0f265a8d9f54e6f39843348

然后我可以吹走整个 virtualenv 并从适当的需求文件中重新安装它,如下所示:

pip install -r requirements/dev.txt

或者,要包含我正在测试的 temp_package:

pip install -r requirements/temp.txt

我就是这样做的,它有助于将我的沙箱与成品分开。

可能,您可以使用 isort 和 运行 isort myproject/* --diff 来获取 isort 将对您的项目进行的建议更改列表。

在提议的更改中,它列出了未使用的导入。从那里,您可以查看安装在虚拟环境中的包并开始使用 pip 删除它们。这是假设您没有删除导入语句,实际情况可能并非如此。

另一种方法是创建一个新环境并尝试 运行 您的应用。在您的应用 运行 之前,使用错误消息获取您需要的包。不漂亮,但它会工作。