我尝试按照说明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不能升级或安装包?
答案 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;
}
作为参数重新创建它。