¿Cómo determinar correctamente el directorio de script actual?
Me gustaría ver cuál es la mejor manera de determinar el directorio de script actual en python.
Descubrí que, debido a las muchas formas de llamar al código de Python, es difícil encontrar una buena solución.
Aquí hay algunos problemas:
__file__
no está definido si el script se ejecuta conexec
, execfile
__module__
se define solo en módulosCasos de uso:
./myfile.py
python myfile.py
./somedir/myfile.py
python somedir/myfile.py
execfile('myfile.py')
(desde otro script, que puede ubicarse en otro directorio y que puede tener otro directorio actual.Sé que no hay una solución perfecta, pero estoy buscando el mejor enfoque que resuelva la mayoría de los casos.
El enfoque más utilizado esos.path.dirname(os.path.abspath(__file__))
pero esto realmente no funciona si ejecuta el script desde otro conexec()
.
Cualquier solución que use el directorio actual fallará, esto puede ser diferente según la forma en que se llama el script o se puede cambiar dentro del script en ejecución.