L'activation d'un VirtualEnv à l'aide d'un shell script ne semble pas fonctionner
J'ai essayé d'activer un VirtualEnv via un shell script comme celui-ci, mais il ne semble pas fonctionner,
#!/bin/sh
source ~/.virtualenvs/pinax-env/bin/activate
J'obtiens l'erreur suivante
$ sh virtualenv_activate.sh
virtualenv_activate.sh: 2: source: not found
mais si je entrer dans la même commande sur le terminal, cela semble fonctionner
$ source ~/.virtualenvs/pinax-env/bin/activate
(pinax-env)gautam@Aspirebuntu:$
J'ai donc modifié le script shell pour
#!/bin/bash
source ~/.virtualenvs/pinax-env/bin/activate
comme l'a suggéré et utilisé
$ bash virtualenv_activate.sh
gautam@Aspirebuntu:$
pour exécuter le script .
Qui ne renvoie pas d'erreur mais aucun ne fait qu'activer le virtuel env
De sorte que toute suggestion sur la façon de résoudre ce problème ?
PS : j'utilise Ubuntu 11.04
- essayez
bash virtualenv_activate.sh
- pouvez-vous donner des précisions et poster une réponse .
Vous devez vous connecter pour publier un commentaire.
TLDR
Devez exécuter l' .sh script avec
source
au lieu du script uniquementet pas
votre-script.sh
Détails
sh n'est pas la même que bash (bien que certains systèmes, il suffit de lier sh, bash, le fait d'exécuter les sh court réellement bash). Vous pouvez penser sh comme une version édulcorée de bash. Une chose que bash a que le poisson n'est la commande "source". C'est pourquoi vous obtenez cette erreur... source fonctionne très bien dans votre shell bash. Mais quand vous commencez votre script à l'aide de sh, vous exécutez le script dans un shell dans un sous-processus. Depuis que le script est en cours d'exécution dans le poisson, la "source" n'est pas trouvé.
La solution est de lancer le script en bash à la place. Modifier la première ligne...
Puis courir avec...
...ou...
Edit:
Si vous voulez l'activation de la virtualenv pour changer le shell que vous appelez le script, vous devez utiliser la "source" ou "opérateur point". Cela garantit que le script est exécuté dans le shell courant (et donc des changements de l'environnement actuel)...
...ou...
Comme une note de côté, c'est pourquoi virtualenv toujours dit que vous devez utiliser "source" à terme, c'est activer le script.
. envFile
, souvent désigné comme "point les envFile'. Bonne chance 😉. virtual-folder/bin/activate
sudo service postgresql restart
python manage.py runserver
source
est un builtin shell de commande de bash, et n'est pas disponible dans les poissons. Si je me souviens bien puis virtuel env fait beaucoup de chemin d'accès et la manipulation des variables d'environnement. Même en l'exécutant en tantbash virtualenv_blah.sh
l'habitude de travailler depuis cela il suffit de créer l'environnement à l'intérieur du sous-shell.Essayer
. virtualenv_activate.sh
ousource virtualenv_activate.sh
fondamentalement obtient le script à exécuter dans votre environnement actuel et toutes les variables d'environnement modifié par virtualenv activer seront disponibles.HTH.
Edit: Voici un lien qui pourrait aider - http://ss64.com/bash/period.html
Sur Mac OS X, vos propositions ne semble pas travailler.
J'ai fait de cette manière. Je suis pas très heureux avec la solution, mais la part de toute façon d'ici et d'espoir, que peut-être quelqu'un pourra vous suggérer le meilleur:
Dans
activate.sh
j'aiJe donne des autorisations d'exécution par:
chmod +x activate.sh
Et j'exécute cette façon:
Avis qu'il y a paranthesis en forme de code ASCII 96 = ` ( accent Grave )
Dans mon cas, Ubuntu 16.04, les méthodes ci-dessus n'a pas bien fonctionné ou s'il a besoin de beaucoup de travaux.
Je viens de faire un lien "activer" fichier de script et de le copier dans le dossier home(ou $PATH dossier accessible) et l'a renommé simple comme "actai'.
Puis dans un terminal, il suffit d'appeler la "source actai'. Il a travaillé!