Virtualenv包升级和安装失败:无法导入名称消息

时间:2016-03-29 16:45:29

标签: python virtualenv

我尝试按照说明here在virtualenv中升级pip。升级失败,因为系统python无法从电子邮件模块中导入名称Message。

(newsfeed)myhost:newsfeed admin$ pip install --upgrade pip
Traceback (most recent call last):
  File "/Users/admin/newsfeed/newsfeed/bin/pip", line 7, in <module>
    from pip import main
  File "/Library/Python/2.7/site-packages/pip/__init__.py", line 9, in <module>
    from pip.log import logger
  File "/Library/Python/2.7/site-packages/pip/log.py", line 8, in <module>
    from pip import backwardcompat
  File "/Library/Python/2.7/site-packages/pip/backwardcompat/__init__.py", line 69, in <module>
    from email import Message as emailmessage
ImportError: cannot import name Message

这个问题不只是升级pip,而是在virtualenv中安装任何东西。尝试新的软件包安装时会发生同样的错误。

在virtualenv之外的python终端中,无法导入消息,但在virtualenv内部它可以。

此外,在同一台机器上的不同virtualenv中,安装或升级软件包时没有错误。

为什么这个virtualenv不能升级或安装包?

2 个答案:

答案 0 :(得分:1)

标准库的电子邮件包被路径中名为email(.py)的包或模块隐藏(隐藏)。

通过调用

找到包

python -c 'import email;print(email.__file__)'

并重命名或删除它。

答案 1 :(得分:0)

你的点子不在venv中,所以你可能无法像这样升级它。

这是因为您创建了一个使用系统包的venv。删除venv并通过添加else if(!stationName.equalsIgnoreCase(name)) { System.out.println("No information was found for station " + stationName); break; } 作为参数重新创建它。