Python не может найти dateutil.relativedelta - PullRequest
31 голосов
/ 07 декабря 2011

Я пытаюсь запустить программу, используя 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 и затем переключение на виртуальный environment предоставит root-доступ и установит в виртуальный каталог python.Использование sudo приведет к установке библиотек в каталог по умолчанию, а не в пакеты сайтов виртуальных сред.

Ответы [ 4 ]

57 голосов
/ 14 октября 2012

Я также столкнулся с этой проблемой, простое решение, которое я использовал, заключалось в добавлении --upgrade в конец команды. Это заставило его установить его, хотя python думал, что он установлен. Это решило проблему.

Так что, если у вас есть эта проблема, попробуйте следующее:

sudo pip install python-dateutil --upgrade

Это ничего не может повредить, поэтому нет ничего страшного в том, чтобы просто переустановить его.

3 голосов
/ 04 сентября 2013

У меня была похожая проблема, но по более простой причине. У моего свежего virtualenv просто не было установлено dateutil, и я не знал имени пакета Python. Я попытался pip install dateutil, который, очевидно, не работал, так как имя пакета было неверным. Запуск pip install python-dateutil вместо этого работал (без обращения к sudo).

1 голос
/ 19 января 2013

Это довольно старая ветка, так что это просто для потомков (предыдущий комментарий об установке 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, чтобы вы могли перейти к новому.

1 голос
/ 07 декабря 2011

Это похоже на проблему установки пакета для меня. Список неисправностей, который приходит мне в голову:

  1. Убедитесь, что вы установили пакет.
  2. Если установлено, убедитесь, что файлы были сохранены в правильном каталоге (каталог, доступный из вашего интерпретатора Python (= в PYTHONPATH, полезная статья здесь ).
  3. Проверьте разрешение для этих файлов.
  4. Перезапустите вашу оболочку, если вы попытались импортировать туда.
  5. Перезагрузите компьютер (ой ... уже 10 лет я пользуюсь GNU / Linux, но все еще страдаю от плохих воспоминаний о Windows!;)

HTH (хотя бы немного!).

...