【问题标题】:How can I solve "cannot import name 'main' from 'virtualenv'"?如何解决“无法从'virtualenv'导入名称'main'”?
【发布时间】:2020-05-04 03:30:44
【问题描述】:

当我尝试运行 virtualenv 时,出现以下错误:

[jelly@laptop Getskilled]$ virtualenv venv
Traceback (most recent call last):
  File "/usr/bin/virtualenv", line 6, in <module>
    from virtualenv import main
ImportError: cannot import name 'main' from 'virtualenv' (/home/jelly/.local/lib/python3.8/site-packages/virtualenv/__init__.py)

我上次将 Virtualenv 用于项目时正在工作,所以我猜测更新会导致它崩溃。我已经尝试重新安装 virtualenv 和 pip。

我能找到的最接近的帖子是这个: virtualenv: cannot import name 'main'

我尝试关注这篇文章,所以我在 python 解释器中运行了以下内容:

import virtualenv
virtualenv.__file__

返回:'/home/jelly/.local/lib/python3.8/site-packages/virtualenv/init.py'

但是,没有文件 /usr/local/bin/virtualenv.py 并且 .local 目录中没有 virtualenv.py,因此该帖子中的解决方案对我不起作用。

接下来我可以尝试什么?

更新: 我在 /usr/bin/ 中找到了 virtualenv.py,它似乎是导致问题的原因,但我不确定如何更新它以使用当前版本。我移动了它,然后尝试重新安装 virtualenv,但没有生成新的 virtualenv.py,所以仍然不确定发生了什么。

【问题讨论】:

    标签: python django pip virtualenv


    【解决方案1】:

    这发生在我安装新的 Ubuntu 20.04 LTS 时。我将现有的 virtualenv 文件重命名为其他文件,它又开始工作了。不完全确定为什么,但这是来自这个答案的建议:https://stackoverflow.com/a/32859811/2477292

    sudo mv /usr/local/bin/virtualenv /usr/local/bin/xvirtualenv

    【讨论】:

    • 获取mv: cannot stat '/usr/local/bin/virtualenv': No such file or directory
    • @shellbot97 which virtualenv 给你什么?
    【解决方案2】:

    我添加了一个指向 /home/jelly/.local/bin/virtualenv 的符号链接 /usr/bin/virtualenv,它现在似乎可以工作了 :)

    【讨论】:

      【解决方案3】:

      可以通过修改pip文件解决该错误

      检查文件的位置:

      $ which pip
      path -> /usr/bin/pip
      

      转到该位置 /usr/bin/pip 并打开一个终端。

      输入:$ sudo nano pip

      你可以看到:

      from pip import main
      if __name__ == '__main__':
           sys.exit(main())
      

      改为:

      import sys
      from pip import __main__
      if __name__ == '__main__':
           sys.exit(__main__._main())
      

      然后 Ctrl + O 写入更改并退出。

      希望这会成功!

      【讨论】:

      • 问题不是关于pip,而是关于virtualenv
      猜你喜欢
      • 1970-01-01
      • 2019-11-02
      • 2021-07-19
      • 2022-06-17
      • 2015-12-27
      • 2022-06-30
      • 1970-01-01
      • 2019-02-13
      • 2018-09-07
      相关资源
      最近更新 更多