Cela peut être ma propre mauvaise compréhension de la façon dont les importations Python et les chemins de recherche fonctionnent, ou cela peut être un problème dans l'empaquetage du paquet caldav.L'importation du script Python échoue si le script est déplacé dans le sous-répertoire
J'ai mis en place un environnement virtualenv MyProject
Au niveau supérieur de myproject, j'ai un script test.py qui contient deux importations:
import lxml
import caldav
Dans ce répertoire, je tapez:
python test.py
et il fonctionne très bien sans aucun problème
maintenant Je déplace le script à l'épreuve du sous-répertoire et exécutez la commande:
python test/test.py
Le lxml d'importation semble fonctionner encore. L'importation caldav échoue avec l'exception suivante:
Traceback (most recent call last):
File "test/test.py", line 34, in <module>
main()
File "test/test.py", line 29, in main
exec ("import " + modulename)
File "<string>", line 1, in <module>
File "/home/ec2-user/caldav2sql/myproject/test/caldav/__init__.py", line 3, in <module>
from davclient import DAVClient
File "/home/ec2-user/caldav2sql/myproject/test/caldav/davclient.py", line 8, in <module>
from caldav.lib import error
ImportError: No module named lib
Est-ce que je fais quelque chose de mal ici? Devrais-je mettre en place une sorte de chemin?
Puisque c'est un environnement de virtualenv, CalDAV existe dans myproject/lib/site-packages/CalDAV. J'ai essayé de régler PYTHONPATH à cet endroit mais ça n'aide pas. –
Je viens de trouver qu'il y avait une fausse installation de caldav sous le sous-répertoire de test, qui gâchait tout. J'ai accepté la réponse de Birryree, car elle m'a aidé à trouver la cause profonde du problème. Merci! –