GNU/Linux >> Tutoriels Linux >  >> Linux

Virtualenv utilise un mauvais python, même s'il est le premier dans $PATH

Mon problème était que j'ai récemment déménagé mon projet avec virtualenv vers un autre emplacement, à cause de ce activate le script avait erroné VIRTUAL_ENV chemin.

$ cat path_to_your_env/bin/activate

... # some declarations

VIRTUAL_ENV="/path_to_your_env/bin/python"  # <-- THIS LINE
export VIRTUAL_ENV

... # some declarations

Pour résoudre ce problème, il suffit de mettre à jour VIRTUAL_ENV en activate script.

Aussi, vous devrez peut-être corriger la première ligne de votre bin/pip pour lier au vrai chemin python.


Si vous ne recevez pas le programme qui which dit que vous devriez obtenir, vous devez regarder plus haut dans la chaîne que l'exécuteur de la plate-forme. Les shells ont généralement un moyen d'aliaser les commandes et sur la plupart des shells unixy, vous pouvez simplement entrer alias pour voir quelles commandes ont été remappées. Ensuite, il suffit d'accéder aux fichiers de configuration de votre shell et de supprimer l'alias.

Parfois, les gens s'appellent python pour essayer de déterminer quel python ils devraient utiliser. Mais il existe généralement d'autres moyens plus efficaces. Sur ma machine Linux, par exemple, python3 est dans le chemin mais est un lien symbolique vers le vrai python que j'utilise.

[email protected] ~ $ which python3
/usr/bin/python3
[email protected] ~ $ ls -l /usr/bin/python3
lrwxrwxrwx 1 root root 9 Feb 17  2016 /usr/bin/python3 -> python3.4
[email protected] ~ $ 

C'est bien car les programmes non-shell exécutant python obtiennent le même que moi et les environnements virtuels fonctionnent naturellement.


Comme tdelaney l'a suggéré dans les commentaires, j'ai exécuté alias et j'ai trouvé que j'avais précédemment alias python à /usr/bin/python3.5 dans mon .bashrc .

J'ai supprimé cet alias de mon .bashrc , a exécuté unalias python , et source ~/.bashrc et le problème a été résolu.


Sur Cygwin, j'ai toujours un problème même après avoir créé un lien symbolique vers le point /usr/bin/python à F:\Python27\python.exe . Ici, après source env/Scripts/activate , which python est toujours /usr/bin/python .

Après un long moment, j'ai trouvé une solution. Au lieu d'utiliser virtualenv env , vous devez utiliser virtualenv -p F:\Python27\python.exe env même si vous avez créé un lien symbolique.


Linux
  1. Pourquoi ne trouve-t-on pas Read /run/user/1000/gvfs même s'il s'exécute en tant que root ?

  2. Questions sur l'environnement virtuel Python

  3. Linux, pourquoi ne puis-je pas écrire même si j'ai des permissions de groupe ?

  4. OpenCV et python/virtualenv ?

  5. L'application Node.js ne peut pas s'exécuter sur le port 80 même si aucun autre processus ne bloque le port

Deux grandes utilisations de la commande cp :Raccourcis Bash

Instruction Python if..else

Effacer jusqu'à la fin de la ligne utilise la mauvaise couleur d'arrière-plan dans Tmux ?

Nginx essaie toujours d'ouvrir le fichier journal des erreurs par défaut même si j'ai défini le fichier de configuration nginx lors du rechargement

L'exécutable Linux échoue avec le fichier introuvable même si le fichier est là et dans PATH

/bin/ls introuvable, même s'il existe !