bash: mkvirtualenv: commande introuvable


100

Après avoir suivi les instructions sur le virtualenvwrappermessage de Doug Hellman , je ne pouvais toujours pas lancer d'environnement de test.

[mpenning@tsunami ~]$ mkvirtualenv test
-bash: mkvirtualenv: command not found
[mpenning@tsunami ~]$

Il convient de noter que j'utilise WORKON_HOMEqui n'est pas dans mon $HOME. J'ai essayé de rechercher /usr/local/bin/virtualenvwrapper.shcomme indiqué dans la virtualenvwrapperdocumentation d'installation , mais cela n'existe pas.

J'utilise CentOS 6 et python 2.6.6, si cela compte.


# File: ~/.bash_profile
# ...

export WORKON_HOME="/opt/virtual_env/"
source "/opt/virtual_env/bin/virtualenvwrapper_bashrc"

Réponses:


107

Solution 1 :

Pour une raison quelconque, virtualenvwrapper.shinstallé dans /usr/bin/virtualenvwrapper.sh, au lieu de sous /usr/local/bin.

Ce qui suit dans mes .bash_profileœuvres ...

source "/usr/bin/virtualenvwrapper.sh"
export WORKON_HOME="/opt/virtual_env/"

Mon installation semble fonctionner correctement sans sourcing virtualenvwrapper_bashrc

Solution 2 :

Alternativement, comme mentionné ci-dessous, vous pouvez tirer parti de la chance qui virtualenvwrapper.shest déjà dans votre shell PATHet émettre simplement unsource `which virtualenvwrapper.sh`


5
Mettre WORKON_HOMEà "~ / .virtualenvs" ( valeur par défaut ) permet de définir des virtualenvs privés
Pierre de LESPINAY

1
Si vous installez à l'aide du gestionnaire de packages de votre distribution, les fichiers seront au /usr/binlieu de /usr/local/bin. En général, vous ne devez pas supposer que l'un ou l'autre est trouvé; c'est l'une des raisons pour lesquelles nous avons une PATHvariable.
tripleee

Cette réponse était basée sur l'installation de virtualenvwrapper avec pip, ce que je préfère faire.
Mike Pennington

Il doit d'abord être installé,pip install virtualenvwrapper
Eddie

WORKON_HOMEest facultatif et n'a rien à voir avec la solution.
scones

55

Essayer:

source `which virtualenvwrapper.sh`

Les backticks sont des substitutions de commandes - ils prennent tout ce que le programme imprime et le mettent dans l'expression. Dans ce cas, "qui" vérifie le $ PATH pour trouver virtualenvwrapper.sh et y renvoie le chemin. Le script est ensuite lu par le shell via 'source'.

Si vous voulez que cela se produise à chaque fois que vous redémarrez votre shell, il est probablement préférable de récupérer d'abord la sortie de la commande "which", puis de mettre la ligne "source" dans votre shell, quelque chose comme ceci:

echo "source /path/to/virtualenvwrapper.sh" >> ~/.profile

^ Cela peut différer légèrement en fonction de votre shell. Veillez également à ne pas utiliser un seul> car cela tronquerait votre ~ / .profile: -o


4
Bien que cela puisse être un indice précieux pour résoudre le problème, une réponse nécessite vraiment un peu plus de détails que cela. Veuillez modifier pour expliquer comment cela résoudra le problème. Vous pouvez également envisager d'écrire ceci comme un commentaire à la place.
Toby Speight

1
Cela a résolu mon problème. Mais quelqu'un vous expliquera-t-il pourquoi et comment?
h0r53

1
Les backticks sont des substitutions de commandes - ils prennent tout ce que le programme imprime et le mettent dans l'expression. Dans ce cas, "qui" vérifie le $ PATH pour trouver virtualenvwrapper.sh et y renvoie le chemin. Le script est ensuite lu par le shell via 'source'.
Erich

43

J'ai eu le même problème sur OS X 10.9.1 avec python 2.7.5. Aucun problème WORKON_HOMEpour moi, mais je ne dois ajouter manuellement source "/usr/local/bin/virtualenvwrapper.sh"à ~/.bash_profile(ou ~/.bashrcà unix) après avoir RANpip install virtualenvwrapper


1
Où avez-vous ajouté manuellement la source "/usr/local/bin/virtualenvwrapper.sh"?
Gregology

1
@Gregology j'ai ajouté cette ligne ~/.bash_profile. Notez que lorsque vous l'ajoutez pour la première fois, vous devrez soit recharger le terminal (qui s'exécute .bash_profile), soit simplement exécuter cette sourcecommande directement à partir de la ligne de commande.
Nick Benes

1
Il serait très utile d'avoir un titre avec le nom du fichier et d'afficher tout le contenu pour ne pas avoir à recevoir de questions de suivi sur "où l'avez-vous mis?"
JGallardo

1
Le fait que vous utilisiez .bash_profileou .bashrcpas vraiment directement une conséquence de la plate-forme que vous utilisez, bien que l'une ou l'autre puisse manquer sur certaines plates-formes. Voir la page de manuel de Bash pour leurs différences. En général, vous ne devriez vraiment en avoir besoin que dans votre .bash_profile, mais certaines distributions utilisent des configurations qui compliquent les choses.
tripleee

25

Prérequis pour exécuter cette commande -

  1. pip (acronyme récursif de P ip I nstalls P ackages) est un système de gestion de packages utilisé pour installer et gérer des packages logiciels écrits en Python. De nombreux packages peuvent être trouvés dans l'index des packages Python (PyPI).

    sudo apt-get installer python-pip

  2. Installez l'environnement virtuel. Utilisé pour créer un environnement virtuel, pour installer des packages et des dépendances de plusieurs projets isolés les uns des autres.

    sudo pip installer virtualenv

  3. Installer le wrapper d'environnement virtuel À propos du wrapper d'environnement virtuel

    sudo pip installer virtualenvwrapper

Après l'installation des prérequis, vous devez activer l'encapsuleur d'environnement virtuel pour créer un environnement virtuel. Voici les étapes -

  1. définir le répertoire de l'environnement virtuel dans la variable de chemin export WORKON_HOME=(directory you need to save envs)

  2. source /usr/local/bin/virtualenvwrapper.sh -p $WORKON_HOME

Comme mentionné par @Mike, source `which virtualenvwrapper.sh` ou which virtualenvwrapper.shpeut être utilisé pour localiser le fichier virtualenvwrapper.sh.

Il est préférable de mettre au-dessus de deux lignes dans ~ / .bashrc pour éviter d'exécuter les commandes ci-dessus à chaque fois que vous ouvrez un nouveau shell. C'est tout ce dont vous avez besoin pour créer un environnement à l'aide de mkvirtualenv

Points à garder à l'esprit -

  • Sous Ubuntu, vous devrez peut-être installer virtualenv et virtualenvwrapper en tant que root. Préfixez simplement la commande ci-dessus avec sudo.
  • Selon le processus utilisé pour installer virtualenv, le chemin d'accès à virtualenvwrapper.sh peut varier. Trouvez le chemin approprié en exécutant $ find / usr -name virtualenvwrapper.sh. Ajustez la ligne dans votre script .bash_profile ou .bashrc en conséquence.

1
Ajout d'une note. Sur ubuntu 18.04, j'ai dû redémarrer après l'installation, puis cela a fonctionné.
Dan Grahn

@screenmutt Merci pour votre précieuse contribution. Je l'ai peut-être manqué car j'utilise ubuntu 16.04. Cependant, j'aimerais savoir après quelle étape avez-vous dû redémarrer? Est-ce après l'installation des packages pip ou après la configuration du "répertoire d'environnement virtuel"?
Keshav

Après l'installation du wrapper. Cela a fonctionné après cela.
Dan Grahn

1
@DanGrahn vous n'avez pas besoin de redémarrer, il vous suffit de réexécuter .bashrc- soit explicitement source ~/.bashrcdans votre terminal actuel, soit ouvrir une nouvelle fenêtre de terminal
TJ Ellis

10

Utilisez cette procédure pour créer un environnement virtuel dans ubuntu

étape 1

Installer pip

   sudo apt-get install python-pip

étape 2

Installez virtualenv

   sudo pip install virtualenv

étape 3

Créez un répertoire pour stocker vos virtualenvs (j'utilise ~ / .virtualenvs)

   mkdir ~/.virtualenvs

ou utilisez cette commande pour installer une version spécifique de python dans env

virtualenv -p /usr/bin/python3.6 venv

étape 4

   sudo pip install virtualenvwrapper

étape 5

   sudo nano ~/.bashrc

étape 6

Ajoutez ce code de deux lignes à la fin du fichier bashrc

  export WORKON_HOME=~/.virtualenvs
  source /usr/local/bin/virtualenvwrapper.sh

étape 7

Ouvrir un nouveau terminal (recommandé)

étape 8

Créer une nouvelle virtualenv

  mkvirtualenv myawesomeproject

étape 9

Pour charger ou basculer entre virtualenvs, utilisez la commande workon:

  workon myawesomeproject

étape 10

Pour quitter votre nouvelle virtualenv, utilisez

 deactivate

et assurez-vous d'utiliser pip vs pip3

OU suivez les étapes ci-dessous pour installer l'environnement virtuel à l'aide de python3

Installer env

python3 -m venv my-project-env

et activez votre environnement virtuel à l'aide de la commande suivante:

source my-project-env/bin/activate

6

Depuis que je viens de passer un peu de temps, je vais essayer d'écrire la réponse que j'aurais souhaité il y a deux heures. Ceci est pour les personnes qui ne veulent pas seulement la solution copier-coller

Premièrement: vous demandez-vous pourquoi copier et coller des chemins fonctionne pour certaines personnes alors que cela ne fonctionne pas pour d'autres? ** La raison principale, les solutions diffèrent sont les différentes versions de python, 2.x ou 3.x. Il existe en fait des versions distinctes de virtualenv et virtualenvwrapper qui fonctionnent avec python 2 ou 3. Si vous êtes sur python 2, installez comme suit:

sudo pip install virutalenv
sudo pip install virtualenvwrapper

Si vous prévoyez d'utiliser python 3, installez les versions associées de python 3

sudo pip3 install virtualenv
sudo pip3 install virtualenvwrapper

Vous avez installé avec succès les packages pour votre version python et sont tous configurés, non? Eh bien, essayez-le. Tapez workondans votre terminal. Votre terminal ne pourra pas trouver la commande ( workonest une commande de virtualenvwrapper). Bien sûr que non. Workonest un exécutable qui ne vous sera disponible qu'une fois que vous aurez chargé / source le fichier virtualenvwrapper.sh. Mais le guide d'installation officiel vous a couvert sur celui-ci, non ?. Ouvrez simplement votre .bash_profile et insérez ce qui suit, il est dit dans la documentation:

export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Devel
source /usr/local/bin/virtualenvwrapper.sh

En particulier, la commande source /usr/local/bin/virtualenvwrapper.shsemble utile car la commande semble charger / générer le fichier souhaité virtualenvwrapper.shcontenant toutes les commandes avec lesquelles vous souhaitez travailler comme workonet mkvirtualenv. Mais oui, non. En suivant le guide officiel d'installation, vous êtes très susceptibles de recevoir l'erreur du message initial: mkvirtualenv: command not found. Aucune commande n'est trouvée et vous êtes toujours frustré. Alors quel est le problème ici? Le problème est que virtualenvwrapper.sh n'est pas là où vous le recherchez en ce moment. Petit rappel ... vous regardez ici:

source /usr/local/bin/virtualenvwrapper.sh

Mais il existe un moyen assez simple de trouver le fichier souhaité. Tapez simplement

which virtualenvwrapper

à votre terminal. Cela recherchera votre PATH pour le fichier, car il est très probable qu'il se trouve dans un dossier inclus dans le PATH de votre système.

Si votre système est très exotique, le fichier souhaité se cachera en dehors d'un dossier PATH. Dans ce cas, vous pouvez trouver le chemin vers virtalenvwrapper.shavec la commande shellfind / -name virtualenvwrapper.sh

Votre résultat peut ressembler à ceci: /Library/Frameworks/Python.framework/Versions/3.7/bin/virtualenvwrapper.sh Félicitations. You have found your missing file!. Il ne vous reste plus qu'à changer une commande dans votre .bash_profile. Changez simplement:

source "/usr/local/bin/virtualenvwrapper.sh"

à:

"/Library/Frameworks/Python.framework/Versions/3.7/bin/virtualenvwrapper.sh"

Toutes nos félicitations. Virtualenvwrapper fonctionne maintenant sur votre système. Mais vous pouvez faire une autre chose pour améliorer votre solution. Si vous avez trouvé le fichier virtualenvwrapper.shavec la commande, which virtualenvwrapper.shvous savez qu'il se trouve dans un dossier du PATH. Donc, si vous écrivez simplement le nom de fichier, votre système de fichiers supposera que le fichier se trouve dans un dossier PATH. Vous n'avez donc pas à écrire le chemin complet. Tapez simplement:

source "virtualenvwrapper.sh"

C'est tout. Vous n'êtes plus frustré. Vous avez résolu votre problème. J'espère.


En fait, je viens de copier et de coller votre solution
johnny 5

2

Pour installer avec succès le virtualenvwrappersur Ubuntu 18.04.3, vous devez procéder comme suit:

  1. Installer virtualenv

    sudo apt install virtualenv
  2. Installer virtualenvwrapper

    sudo pip install virtualenv
    sudo pip install virtualenvwrapper
  3. Ajoutez ce qui suit à la fin du .bashrcfichier

    export WORKON_HOME=~/virtualenvs
    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
    source ~/.local/bin/virtualenvwrapper.sh
  4. Exécutez le .bashrcfichier

    source ~/.bashrc
  5. Créez votre virtualenv

    mkvirtualenv your_virtualenv

fonctionne également sur ubuntu 20.04. une petite correction tho: WORKON_HOME=~/.virtualenvsc'est la valeur par défaut. pas besoin de définir cela. VIRTUALENVWRAPPER_PYTHON=/usr/bin/pythonest également la valeur par défaut, mais lorsque vous utilisez python3, cela est utile. aussi on devrait utiliser export PATH="$HOME/.local/bin:$PATH"pour les chemins binaires python
scones

1

Sur Windows 7 et Git Bash, cela m'aide:

  1. Créez un fichier ~ / .bashrc (sous votre dossier d'accueil utilisateur)
  2. Ajouter une ligne d' exportation WORKON_HOME = $ HOME / .virtualenvs (vous devez créer ce dossier s'il n'existe pas)
  3. Ajoutez la source de ligne "C: \ Program Files (x86) \ Python36-32 \ Scripts \ virtualenvwrapper.sh" (changez le chemin de votre virtualenvwrapper.sh)

Redémarrez votre git bash et la commande mkvirtualenv maintenant fonctionnera correctement.


1

En utilisant Git Bash sur Windows 10 et Python36 pour Windows, j'ai trouvé le virtualenvwrapper.sh dans un endroit légèrement différent et l'exécuter a résolu le problème

source virtualenvwrapper.sh 
/c/users/[myUserName]/AppData/Local/Programs/Python36/Scripts

0

J'ai résolu mon problème dans le système d'exploitation Ubuntu 14.04 avec python 2.7.6, en ajoutant ci-dessous deux lignes dans les fichiers ~ / .bash_profile (ou ~ / .bashrc sous unix).

source "/usr/local/bin/virtualenvwrapper.sh"

export WORKON_HOME = "/ opt / virtual_env /"

Et puis exécuter ces deux lignes sur le terminal.


0

Sous Windows 10, pour créer l'environnement virtuel, je remplace " pip mkvirtualenv myproject " par " mkvirtualenv myproject " et cela fonctionne bien.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.