Python не может найти dateutil.relativedelta

Я пытаюсь запустить программу с помощью 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 и бьюсь об заклад, я делал вот что:--12-->

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

4 ответов


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

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

sudo pip install python-dateutil --upgrade

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


у меня была аналогичная проблема, но по более простой причине. Мой свежий virtualenv просто не был установлен dateutil, и я не знал имя пакета Python. Я пытался!--0-->, что, очевидно, не сработало, так как имя пакета было неверным. Бег!--1-- > вместо этого работал (не прибегая к sudo).


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

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

HTH (по крайней мере, немного!).


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