Python cannot find dateutil.relativedelta



我正试图使用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(。

这看起来像是软件包安装的问题。我脑海中浮现的故障排除列表:

  1. 请验证您是否安装了程序包
  2. 如果安装了,请验证文件是否存储在正确的目录中(可以从python解释器访问的目录(=在PYTHONPATH中,这里的文章很有用(
  3. 验证对这些文件的权限
  4. 如果您尝试在那里导入,请重新启动您的shell
  5. 重新启动你的电脑(哎哟…我开始使用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包。

最新更新