我正试图使用paster serve
运行一个程序,但我一直收到错误:
ImportError:没有名为dateutil.rerelatedelta 的模块
我运行的是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
只为Python安装;2.7,我敢打赌我正在做的是:
sudo yum install python-dateutil
sudo
必须切换到默认的Python版本(即Python 2.7而不是2.6.4(。
解决这个问题很简单:
su
(switch to virtual environment)
yum install python-dateutil
使用su
,然后切换到虚拟环境,将允许root用户访问并安装到虚拟Python目录。使用sudo
将库安装到默认目录,而不是虚拟环境站点包。
我也遇到了这个问题。我最终使用的简单解决方案是在命令末尾添加--upgrade
。这迫使它安装它,尽管Python认为它已经安装了。这解决了问题。
因此,如果您有这个问题,请尝试以下操作:
sudo pip install python-dateutil --upgrade
它不可能伤害任何东西,所以强迫它重新安装也没有害处。
我也遇到过类似的问题,但原因更简单。我的新virtualenv根本没有安装dateutil,我也不知道Python包的名称。我尝试了pip install dateutil
,但由于包名称不正确,它显然不起作用。运行pip install python-dateutil
反而有效(不使用sudo
(。
这看起来像是软件包安装的问题。我脑海中浮现的故障排除列表:
- 请验证您是否安装了程序包
- 如果安装了,请验证文件是否存储在正确的目录中(可以从python解释器访问的目录(=在PYTHONPATH中,这里的文章很有用(
- 验证对这些文件的权限
- 如果您尝试在那里导入,请重新启动您的shell
- 重新启动你的电脑(哎哟…我开始使用GNU/Linux已经10年了,但我仍然饱受Windows的坏记忆之苦!;(
(前面关于安装python dateutil的评论对我有帮助,所以我的评论可能对其他人有帮助(。
对于那些在Mac操作系统(v10.6(雪豹(;我不确定其他版本(,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包,以便您可以访问新的dateutil包。