当我第一次安装 Ubuntu(16.04 LTS)时,我没有意识到(通常)通过以下方式安装 python 包不是一个好pip
主意sudo
:
sudo pip install mypackage
但是,每当我想在没有我的情况下安装一个包时,sudo
我都会被拒绝。
现在,我意识到我应该使用--user
标志安装了大多数/所有这些包:
pip install --user mypackage
这将防止任何包在我的计算机上以 root 权限执行不需要的代码。(我现在也有一个使用 virtualenv 和类似的更好的环境设置)。
但是,我仍然安装了很多软件包pip
,我想以用户而不是 root 身份重新安装这些软件包。但是,据我了解,Ubuntu 默认安装了一些 python 包(通过apt-get
,但这些仍然列出并且可以通过 删除pip
)。所以我的问题是:我怎样才能删除(并重新安装)我已经安装的所有包而不弄乱 Ubuntu 使用的包?
正确的方式
创建所有 python 包的列表:
然后创建由以下人员安装的所有这些软件包的列表
apt
:现在我们要列出可以删除的 python 包,
/tmp/list.pip
哪些是由 安装的包,手动检查它们并删除不在.pip
/tmp/list.apt
apt
/tmp/apt.list
由于 apt 和 pip 之间的命名约定不同,下面的解决方案无法正常工作。我稍后会修复它...
最后获取仅由安装
pip
和未安装的所有软件包的列表apt
(软件包存在于文件中/tmp/list.pip
但不存在/tmp/list.apt
):然后使用
/tmp/list_toRemove
内容来删除或升级你的pip
包。例如,要删除它们,您可以运行:
并重新安装它们:
错误的方法
使用如下命令:
还包括
apt
从特定路径安装的包,所以不要使用这些命令。