Je voudrais voir quelle est la meilleure façon de déterminer actuel répertoire du script en python?
J'ai découvert que deux des nombreuses façons d'appeler le code python, il est difficile de trouver une bonne solution.
Voici quelques problèmes:
-
__file__
n'est pas défini si le script est exécuté avecexec
,execfile
-
__module__
est définie uniquement dans les modules
Cas d'utilisation:
./myfile.py
python myfile.py
./somedir/myfile.py
python somedir/myfile.py
-
execfile('myfile.py')
(à partir d'un autre script, qui peut être situé dans un autre répertoire et qui peut avoir un autre répertoire en cours.
Je sais qu'il n'y a pas de solution parfaite, car dans certains cas, mais je suis à la recherche de la meilleure approche qui a résolu la plupart des cas.
La plus utilisée est l'approche os.path.dirname(os.path.abspath(__file__))
mais c'est vraiment ne fonctionne pas si vous exécutez le script à partir d'une autre avec l' exec()
.
Avertissement
Toute solution qui utilise le répertoire courant échoue, cela peut être différent en fonction de la façon dont le script est appelé ou il peut être modifié dans le script en cours.