繁体   English   中英

如何解决“无法从'virtualenv'导入名称'main'”?

[英]How can I solve “cannot import name 'main' from 'virtualenv'”?

当我尝试运行 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,所以仍然不确定发生了什么。

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

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

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

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

检查文件的位置:

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

Go 到该位置 /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 写入更改并退出。

希望这会做!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM