我在Mac OS X约塞米蒂上使用virtualenv遇到了一点问题。在我无法运行virtualenv之后,我通过brew
安装了Python 3(以前我通过www.example.com上的软件包安装了它python.org)。我链接了python3的安装,更新了pip并运行了pip3 install virtualenv
。当我尝试运行virtualenv(例如$ virtualenv --python=python3 ../virtualenv
)时,我得到了以下错误消息。
Traceback (most recent call last):
File "/usr/local/bin/virtualenv", line 7, in <module>
from virtualenv import main
File "/usr/local/bin/virtualenv.py", line 7, in <module>
from virtualenv import main
ImportError: cannot import name 'main'
有人能帮我一下吗?
5条答案
按热度按时间tcbh2hod1#
在我升级到Fedora 32之后,我遇到了同样的问题,这让我想到了这个问题:
在我的例子中,我实际上似乎有
/usr/local/bin/virtualenv
和$HOME/.local/lib/python3.8/site-packages/virtualenv/__init__.py
。删除用户virtualenv版本并使用root将其重新安装到系统中修复了该问题:
sqserrrh2#
您的virtualenv可执行文件
/usr/local/bin/virtualenv
正在导入virtualenv包/usr/local/bin/virtualenv.py
。我猜该包不是可执行文件真正应该导入的包。它选择该包的原因是因为它位于同一目录中。首先,检查真实的的virtualenv包在哪里。在python3终端中:
如果它不是
/usr/local/bin/virtualenv.py
,那么让/usr/local/bin/virtualenv
导入它而不是/usr/local/bin/virtualenv.py
的最简单方法是删除/usr/local/bin/virtualenv.py
(如果它不起作用,您可以轻松撤销此操作,只需将virtualenv.py
重命名为xvirtualenvx.py
)。blmhpbnm3#
我在升级Ubuntu 18.04 LTS到20.04 LTS后收到了这个错误。所以一下子出现了两个问题。首先,Python版本仍然运行2.x,做一个简单的更新或尝试卸载(
apt-get remove virtualenv
)virtualenv根本没有帮助。但我找到了一个解决方案。首先让20.04 LTS“知道”使用旧Python的时代已经结束:然后进行测试,打开控制台,获取带有
python -V
的版本字符串;现在它应该显示类似于 Python 3.8.5 的内容。下一步是解决
virtualenv
问题。我试图找出哪个可执行文件与which virtualenv
一起运行,结果显示:$HOME/.local/bin/virtualenv
.嗯,不知何故,系统没有使用/usr/bin/virtualenv
可执行文件。我想也许我让目录变得不可见(a.k.a.重命名),也许系统会继续寻找一个替代的virtualenv
运行:然后我简单地切换到playground目录并运行
virtualenv donaldknuth
,看-它工作了。为了确保我运行另一个which virtualenv
,系统返回/usr/bin/virtualenv
。最后要做的检查是激活新的虚拟环境:终端更换后工作正常。解决方案
编辑:
根据Pierre B.的建议,您可能需要重新启动Shell。命令
hash -d virtualenv
将从Shell的缓存中删除virtualenv
的存储位置,并立即确定正确的路径。(来源:https://www.computerhope.com/unix/bash/hash.htm、https://unix.stackexchange.com/questions/5609/how-do-i-clear-bashs-cache-of-paths-to-executables)sdnqo3pr4#
与这里的其他一些人类似,我安装了多个virtualenv。不知道额外的一个来自哪里,但我有这两个:
一个是从apt install的virtualenv,另一个是从pip install的virtualenv。
升级到Ubuntu 20.04时发生了这种情况。
nlejzf6q5#
在Linux Mint 20上,我必须switch default Python interpreter to
python3
然后删除现有的
virtualenv
并通过pip
和python3
重新安装: