¿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ódulos

Casos de uso:

./myfile.pypython myfile.py./somedir/myfile.pypython somedir/myfile.pyexecfile('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().

Advertencia

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.

Respuestas a la pregunta(13)

Su respuesta a la pregunta