¿Por qué mi ‘sys.path’ de Python es diferente para cada herramienta que uso para ejecutar mi código?

Estoy confundido acerca de las reglas usadas para construir mi sys.path Python. Entiendo que la primera entrada será “el directorio que contiene el script que se usó para invocar al intérprete de Python”, o una cadena vacía si Python se invocó de manera interactiva, y que las últimas entradas serán entradas basadas en la instalación de Python. Pero estoy confundido acerca de lo que está pasando entre estos dos conjuntos de entradas, en particular, cómo se relacionan con mi PYTHONPATH.

Cuando yo (A) ejecuto una secuencia de comandos que imprime las entradas de mi sys.path utilizando python test.py en el indicador de comando del sistema en el directorio ../scriptpath , obtengo:

 /Users/Rax/Documents/Projects/scriptpath ... (my system PYTHONPATH, as configured in .bash_profile) #(i) /Users/Rax/Documents/Projects/scriptpath ... (system entries) 

que no es lo mismo que lo que recibo cuando (B) ejecuto la import test en ../scriptpath en el shell de IPython

 (empty string) /usr/local/bin ... (my system PYTHONPATH) #(i) /Users/Rax/Documents/Projects/scriptpath ... (system entries) /Library/Python/2.7/site-packages/IPython/extensions 

o (C) en una shell de Python

 (empty string) ... (my system PYTHONPATH) #(i) /Users/Rax/Documents/Projects/scriptpath ... (system entries) 

mientras, (D) cuando ejecuto test.py en mi IDE (PyCharm) me sale

 /Users/Rax/Documents/Projects/scriptpath ... (user-added entries in the PyCharm Interpreter Paths settings) #(i) ... (system entries) 

mineral)

 /Users/Rax/Documents/Projects/scriptpath ... (user-added entries in the PyCharm Interpreter Paths settings) #(i) /Users/Rax/Documents/Projects/scriptpath ... (system entries) 

Dependiendo de si tengo una opción para incluir el “contenido raíz” habilitado o no.

Creo que entiendo de dónde provienen las (i) entradas en cada caso: todas están usando mi sistema PYTHONPATH, excepto PyCharm, que utiliza las rutas “agregadas por el usuario” al final de “Rutas” en “Configuración de intérprete”; pero no entiendo de dónde vienen los otros entres (o, de hecho, cómo PyCharm puede ignorar mi sistema PYTHONPATH).

¿Por qué a veces se repite la entrada de .. scriptpath antes y después de (i)? ¿Qué reglas se usan para agregar las otras entradas (como /usr/local/bin en (B)?