14

我在我的 Ubuntu 10.04 服务器上安装了 virtualenv。

现在,当我执行 pip freeze 时,它​​会显示以下包:

Django==1.2.4
distribute==0.6.10
python-apt==0.7.94.2ubuntu6.2
virtualenv==1.5.1
wsgiref==0.1.2

当我执行“pip uninstall Django”时,它会说:

pip uninstall Django
Uninstalling Django:
Proceed (y/n)? y
Successfully uninstalled Django

理想情况下,这应该卸载 Django,但事实并非如此。当我执行“pip freeze”时,我仍然可以看到相同的包。

现在请耐心等待,另一件奇怪的事情是,当我创建一个 virtualenv 然后在其中执行“pip freeze”时,我只看到一个包,那就是“wsgiref”,这很奇怪,因为理想情况下它应该是空白的。

此外,尽管使用 --no-site-packages 创建了这个 virtualenv,我仍然可以使用“django-admin.py startproject”创建一个新的 django 项目。

当我在这个 virtualenv 中启动 python 解释器并执行“import django”时,它给了我错误“No module named django”。

此外,当我尝试在 virtualenv 中安装“pip install Django”时,它会要求 sudo 权限,这在理想情况下不应该发生。

我该如何收拾这个烂摊子。有什么方法可以重置所有 pep 和 virtualenv 吗?

4

4 回答 4

6

重置虚拟环境的最佳方法

Windows环境使用以下命令:

pip freeze > unins && pip uninstall -y -r unins && del unins

Linux环境使用以下命令:

pip freeze > unins && pip uninstall -y -r unins && rm unins
于 2020-12-08T13:31:07.123 回答
6

据我所知,venv 的唯一目的是管理依赖关系。

您应该deactivate对 venv 安全,删除它,然后使用virtualenv venv; source venv/bin/activate.

这会给你一个新的开始。

于 2018-04-11T18:12:06.910 回答
3

这个问题很老,但它被撞到了头版,所以很难辨别你使用的是哪个版本的 pip 和 virtualenv。

尽管如此,我们可以做一些事情来解决这个问题。

  1. 退出所有 virtualenvs,并检查您的$PYTHONPATH. 确保它是空的;否则运行unset PYTHONPATH
  2. myenv在使用时创建一个新的 virtualenv virtualenv --no-site-packages myenv
  3. 激活myenv并再次检查您的$PYTHONPATH。它应该只有myenv.
  4. pip使用绝对路径运行,就像这样myenv/bin/pip freeze
  5. 如果pip在您的 virtualenv 中不可用,您可能必须手动安装它。

相关:virtualenv --no-site-packages 和 pip 仍在寻找全局包?

最后,使用 启动一个 python shell myenv/bin/python,然后运行:

>>> import sys
>>> sys.path

如果pip能找到wsgiref,那么wsgiref一定是在其中的路径之一sys.path。使用那个线索!

于 2018-09-15T21:08:46.290 回答
1

您可以删除 .venv 文件以删除所有依赖项,然后运行python3 -m venv .venv新的虚拟环境。

于 2021-02-23T04:11:32.530 回答