Je veux courir:
python somescript.py somecommand
Mais lorsque je lance ceci, j'ai besoin de PYTHONPATH
pour inclure un certain répertoire. Je ne peux pas simplement l'ajouter à mes variables d'environnement, car le répertoire dans lequel je veux ajouter des modifications en fonction du projet que j'exécute. Est-il possible de modifier PYTHONPATH
lors de l'exécution d'un script? Remarque: je n'ai même pas de variable PYTHONPATH
. Je n'ai donc pas à m'inquiéter de l'ajout ou du remplacement de cette variable lors de l'exécution de ce script.
Pour Mac/Linux;
PYTHONPATH=/foo/bar/baz python somescript.py somecommand
Pour Windows, configurez un wrapper pythonpath.bat
;
@ECHO OFF
setlocal
set PYTHONPATH=%1
python %2 %3
endlocal
et appelez le fichier script pythonpath.bat
comme;
pythonpath.bat /foo/bar/baz somescript.py somecommand
import sys
sys.path.append('your certain directory')
Fondamentalement, sys.path est une liste avec tous les chemins de recherche des modules Python. Il est initialisé par l'interprète. Le contenu de PYTHONPATH est automatiquement ajouté à la fin de cette liste.
Si vous exécutez la commande à partir d'un shell compatible POSIX, comme bash
, vous pouvez définir la variable d'environnement comme suit:
PYTHONPATH="/path/to" python somescript.py somecommand
Si tout est sur une seule ligne, la valeur de l'environnement PYTHONPATH s'applique uniquement à cette commande.
$ echo $PYTHONPATH
$ python -c 'import sys;print("/tmp/pydir" in sys.path)'
False
$ PYTHONPATH=/tmp/pydir python -c 'import sys;print("/tmp/pydir" in sys.path)'
True
$ echo $PYTHONPATH
Comme ce billet est vraiment vieux et que je ne sais pas ce qui a changé au fil du temps, j'aimerais ajouter quelque chose qui ne semble pas être suggéré.
Tout d'abord, pour rendre un script exécutable sans l'indicateur python
, vous devez ajouter la ligne Shebang au début du script.
#!/usr/bin/python
# rest of your code...
Avec la simple ligne ci-dessus, vous spécifiez le chemin d'accès de l'interpréteur python que vous souhaitez utiliser. Ceci est très utile si vous avez plusieurs versions de Python installées.
Maintenant, votre script peut être exécuté comme suit:
<~/direcotry_of_script.py>$ ./script.py [options]
Si vous exécutez le script avec ./
, vous risquez d'obtenir une erreur si vous ne disposez pas des autorisations d'exécution. Pour cela, vous pouvez utiliser Sudo chmod 744 <scriptname>
, pour donner à l’espace-noms racine des autorisations d’exécution.
Vous pouvez simplement ajouter votre script au répertoire /usr/local/bin
. Ensuite, ce script peut être exécuté n'importe où dans le système de fichiers. Voir ci-dessous:
$ script.py [options]
Astuce: script.py peut être renommé simplement script et utilisé comme suit:
$ script [options]
Vous pouvez essayer ceci pour exécuter une fonction dans votre script
python -c "import sys; sys.path.append('/your/script/path'); import yourscript; yourscript.yourfunction()"