我正在尝试使用paster serve
运行程序,但我一直收到错误:
ImportError: No module named dateutil.relativedelta
我正在运行python版本2.6.7和dateutil
版本1.5,所以应该安装它。
有没有人知道为什么会发生这种情况?
我正在使用
导入from dateutil.relativedelta import *
我搜索时甚至可以看到包裹:
/usr/lib/python2.7/site-packages/dateutil/relativedelta.pyc
/usr/lib/python2.7/site-packages/dateutil/relativedelta.py
/usr/lib/python2.7/site-packages/dateutil/relativedelta.pyo
所以这篇文章现在已经有几个月了,它只是为我赢得了热门问题徽章,我认为值得一看,看看我是否可以通过更多经验支持给出这个问题的一个好答案我了。
我立即看一下这个,看到dateutil
仅为python2.7安装,我打赌我在做的是这个:
sudo yum install python-dateutil
sudo
将切换到默认的Python版本(即Python2.7而不是2.6.4)
解决这个问题就像:
su
(switch to virtual environment)
yum install python-dateutil
使用 su
,然后切换到虚拟环境将提供root访问权限并安装到虚拟python目录。使用 sudo
会将库安装到默认目录,而不是虚拟环境site-packages。
答案 0 :(得分:56)
我也遇到过这个问题,我最终使用的简单解决方案是将--upgrade添加到命令的末尾。这迫使它安装它,即使python认为它已安装。这解决了这个问题。
因此,如果您遇到此问题,请尝试以下操作:
sudo pip install python-dateutil --upgrade
它不可能伤害任何东西,所以强迫它重新安装没有任何害处。
答案 1 :(得分:3)
我有一个类似的问题,但原因更简单。我的新virtualenv根本没有安装dateutil,我不知道Python包名。我尝试了pip install dateutil
,由于包名不正确,显然无效。运行pip install python-dateutil
代替工作(不使用sudo
)。
答案 2 :(得分:1)
这看起来像是我的包安装问题。我想到的故障排除列表:
答案 3 :(得分:1)
这是一个相当古老的线程,所以把它放在后代(之前关于安装python-dateutil的评论对我有帮助,所以也许我的评论可以帮助别人)。
对于Mac OS(Snow Leopard,不确定其他版本)的用户,dateutils软件包默认位于:
/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/dateutil
而pip install将包写入:
/Library/Python/2.6/site-packages
并且不会更新/Library/Python/2.6/site-packages/easy-install.pth文件。因此,当您导入dateutil时,您仍然会指向旧位置,您可以通过" import dateutil; dateutil.__file__
"来验证这一点。
所以我所做的(可能是更好的方法)是将旧目录(/System/Library/.../dateutil
)重命名为dateutil.obsolete
并重新启动python,然后再次运行相同的命令集。这不会对路径文件或sys.path
执行任何操作,但会跳过旧的dateutils包,以便您可以使用新的。\ / p>