Подтвердить что ты не робот

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

UPDATE

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

4b9b3361

Ответ 1

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

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

sudo pip install python-dateutil --upgrade

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

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