Python ne peut pas trouver dateutil.relativedelta
Je suis en train de lancer un programme à l'aide paster serve
mais je reçois l'erreur:
ImportError: No module named dateutil.relativedelta
Je suis en cours d'exécution python version 2.6.7 et dateutil
la version 1.5, il doit donc être installé.
Quiconque a des idées pour expliquer pourquoi cela arriverait-il?
Je suis de l'importation à l'aide de
from dateutil.relativedelta import *
Je peux même voir le paquet quand je recherche:
/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
Mise à JOUR
Donc, ce post est maintenant tout à fait quelques mois et il m'a valu la Question Populaire badge, j'ai pensé qu'il pourrait être la peine de prendre un coup d'oeil et voir si je pouvais donner une bonne réponse à cette question avec un peu plus d'expérience que moi la sauvegarde.
Immédiatement je regarde ça et de voir que dateutil
est installé uniquement pour python2.7 et je parie que ce que je faisais était ceci:
sudo yum install python-dateutil
À qui sudo
aurait commutateur par défaut de la version de Python (c'est à dire Python2.7 au lieu de 2.6.4)
Résoudre cela aurait été très simple:
su
(switch to virtual environment)
yum install python-dateutil
À l'aide de su
et puis en passant à l'environnement virtuel va donner l'accès root et installer le virtuel python répertoire. À l'aide de sudo
va installer les bibliothèques dans le répertoire par défaut, pas les environnements virtuels site-packages.
- Quelle est la ligne d'importation que vous utilisez?
- er, êtes-vous tout à fait sûr que cela fonctionne?
rpm
n'est normalement pas au courant des environnements virtuels. Sauf si vous êtes faitpython-dateutil
à partir d'un très inhabituel tr / min à partir d'un non-standard dépôt fedora, l'installation d'un paquet python copiez des fichiers au même endroit quel que soit votre environnement virtuel. D'autre part, de devenir root (ou pas) et à l'aide depip
ou de tout autre python outil de conditionnement doit être installé dans le bon endroit. En fait, la plupart des RPM de l'utilisation de ce mécanisme; mais au cours de la phase de développement, c'est à dire, par le responsable du paquet.
Vous devez vous connecter pour publier un commentaire.
J'ai aussi rencontré ce problème, la solution la plus simple j'ai utilisé était d'ajouter --mise à niveau à la fin de la commande. Cela a contraint à installer, même si python pensé qu'il était installé. Cette résolu le problème.
Donc si vous avez ce problème, essayez les solutions suivantes:
Qu'il ne peut pas blesser n'importe quoi, donc il n'y a pas de mal à les forcer à être réinstallé.
--upgrade
drapeau, il a dit qu'il est déjà installé, donc je ne sais pas pourquoi il dirait qu'il ne l'est pas, alors qu'en réalité, la version est trop ancienne. Merci.J'ai eu un problème similaire mais pour une simple raison. Mon nouveau virtualenv n'ont tout simplement dateutil installé et je ne savais pas le paquet Python nom. J'ai essayé
pip install dateutil
, ce qui évidemment n'est pas de travail depuis le nom du package est incorrect. L'exécution depip install python-dateutil
au lieu de travail (sans avoir recours àsudo
).Cela ressemble à un problème d'installation de package pour moi. Dépannage liste qui me vient à l'esprit:
HTH (au moins un peu!).
C'est un assez vieux thread, afin de mettre cela en seulement pour la postérité (le commentaire précédent à propos de l'installation de python-dateutil m'a aidé, alors peut-être que mon commentaire à l'aide à quelqu'un d'autre).
Pour ceux qui sont sur Mac OS (Snow Leopard, pas sûr que sur les autres versions), le dateutils package se trouve par défaut à:
alors que pip install écrit le colis à:
et ne met pas à jour le /Bibliothèque/Python/2.6/site-packages/facile à installer.la pth fichier. Par conséquent, lorsque vous importez dateutil, vous aurez toujours le point à l'ancien emplacement, vous pouvez vérifier cela en "
import dateutil; dateutil.__file__
".Donc ce que j'ai fait (probablement de meilleures méthodes sont disponibles) a été de renommer l'ancien répertoire (
/System/Library/.../dateutil
) àdateutil.obsolete
et redémarré python, puis a couru le même jeu de commandes à nouveau. Ce n'est pas faire quelque chose pour le chemin d'accès du fichier ousys.path
, mais ignore la vieille dateutils paquet de sorte que vous pouvez obtenir à la nouvelle.