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
установит библиотеки в каталог по умолчанию, а не в пакеты сайтов виртуальных сред.
Ответы
Ответ 1
Я тоже столкнулся с этим вопросом. Простое решение, которое я использовал, заключалось в добавлении --upgrade
в конец команды. Это заставило его установить его, хотя Python думал, что он установлен. Это решило проблему.
Поэтому, если у вас есть эта проблема, попробуйте следующее:
sudo pip install python-dateutil --upgrade
Это ничего не может повредить, поэтому нет ничего страшного в том, чтобы просто переустанавливать его.
Ответ 2
У меня была аналогичная проблема, но по более простой причине. У моего нового virtualenv просто не было установлен дататул, и я не знал имя пакета Python. Я попробовал pip install dateutil
, который, очевидно, не работал, поскольку имя пакета было неправильным. Запуск pip install python-dateutil
вместо этого работал (не прибегая к sudo
).
Ответ 3
Это похоже на проблему установки пакета для меня. Список неисправностей, который приходит мне в голову:
- Убедитесь, что вы установили пакет.
- Если установлено, убедитесь, что файлы были сохранены в правильном каталоге (каталог, доступный из вашего интерпретатора Python (= в PYTHONPATH, полезная статья здесь).
- Проверьте разрешение для этих файлов.
- Перезапустите вашу оболочку, если вы попытались импортировать туда.
- Перезагрузите компьютер (ой... прошло 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, чтобы вы могли перейти к новому.