2009-12-15 4 views
7

J'ai un problème avec virtualenv. Je l'utilise régulièrement, je l'utilise sur ma machine de développement et sur plusieurs serveurs. Mais sur ce dernier serveur j'ai essayé d'utiliser j'ai eu un problème.Erreur d'importation avec virtualenv

J'ai créé un virtualenv avec l'argument --no-site-packages, puis j'installer des modules Python à l'intérieur du virtualenv. Je peux confirmer que les modules sont situés à l'intérieur des paquets de sites virtualenvs et tout semble bien se passer.

Mais quand j'essaie de faire: source virtualenv/bin/activate puis d'importer un des modules python import modulename je reçois une erreur d'importation qui dit que le module n'existe pas. Comment cela se passe-t-il? Il semble que ça ne s'active jamais même si ça dit.

Quelqu'un a une idée sur la façon de résoudre ce problème?

Répondre

14

Y at-il un alias bash actif sur cette machine pour « python », par hasard? Cela aura priorité sur les modifications PATH faites par activate, et pourrait entraîner l'utilisation du mauvais binaire python.

Essayez d'exécuter directement virtualenv/bin/python (pas besoin d'activer) et voir si vous pouvez importer votre module.

Si cela, vous corrige juste besoin de se débarrasser de votre alias bash python.

+0

Merci, c'était. Impossible de comprendre quelle était la raison. Avez-vous maintenant comment en faire un changement permanent afin que je n'ai pas à faire venv/bin/python à chaque fois? – espenhogbakk

+0

Je viens de rencontrer le même problème. Comment vous débarrasser de l'alias bash? – nutship

+0

Bien, l'alias est probablement créé avec une commande 'alias' quelque part dans vos fichiers de démarrage bash: .bashrc ou .bash_profile, ou peut-être si vous êtes sur un système partagé, quelque chose est installé dans un fichier système comme/etc/bash.bashrc? Il suffit de trouver où l'alias est créé, supprimer/commenter cette ligne, et commencer un nouveau shell, et il devrait être parti. –

5

Après avoir activé l'env virtuel, essayez:

$ python 
>>> import sys 
>>> sys.executable 
... 

... et voyez si vous exécutez l'exécutable attendu.

vérifier aussi:

>>> sys.path 
[...] 
Questions connexes