37

我正在尝试使用 运行程序paster serve,但我不断收到错误消息:

ImportError:没有名为 dateutil.relativedelta 的模块

我正在运行 Python 2.6.7dateutil版和 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会将库安装到默认目录,而不是虚拟环境站点包。

4

4 回答 4

63

我也遇到了这个问题。我最终使用的简单解决方案是添加--upgrade到命令的末尾。这迫使它安装它,即使 Python 认为它已安装。这解决了这个问题。

因此,如果您遇到此问题,请尝试以下操作:

sudo pip install python-dateutil --upgrade

它不可能伤害任何东西,因此仅强制重新安装它没有任何害处。

于 2012-10-14T14:33:43.117 回答
8

我有一个类似的问题,但原因更简单。我的新 virtualenv 根本没有安装 dateutil,而且我不知道 Python 包名称。我试过pip install dateutil了,由于包名不正确,这显然不起作用。运行pip install python-dateutil代替工作(不诉诸sudo)。

于 2013-09-04T08:23:11.280 回答
1

这对我来说似乎是包安装的问题。我想到的故障排除列表:

  1. 验证您安装了该软件包。
  2. 如果已安装,请验证文件是否已存储在正确的目录中(可以从您的 python 解释器访问的目录(= 在 PYTHONPATH 中,有用的文章在这里)。
  3. 验证对这些文件的权限。
  4. 如果您在那里尝试导入,请重新启动您的 shell。
  5. 重新启动您的计算机(哎呀……我开始使用 GNU/Linux 已经 10 年了,但我仍然为 Windows 的糟糕记忆所苦!;)
于 2011-12-07T16:25:33.277 回答
1

(之前关于安装 python-dateutil 的评论帮助了我,所以也许我的评论对其他人有帮助)。

对于 Mac OS(v10.6 (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 包,以便您可以使用新的包。

于 2013-01-19T18:48:18.633 回答