Warum unterscheidet sich mein Python-Pfad "sys.path" für jedes Tool, mit dem ich meinen Code ausführe?

Ich bin verwirrt über die Regeln, die zum Erstellen von Python verwendet werdensys.path. Ich verstehe, dass dieerster Eintrag wird sein "Das Verzeichnis, das das Skript enthält, mit dem der Python-Interpreter aufgerufen wurde" oder eine leere Zeichenfolge, wenn Python interaktiv aufgerufen wurde, und die letzten Einträge sind Einträge, die auf der Installation von Python basieren. Aber ich bin verwirrt darüber, was zwischen diesen beiden Einträgen vor sich geht, insbesondere darüber, wie sie sich auf meinen PYTHONPATH beziehen.

Wenn ich (A) ein Skript ausführe, das die Einträge von my ausgibtsys.path mitpython test.py an der Eingabeaufforderung des Systems in der../scriptpath Verzeichnis bekomme ich:

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

Das ist nicht dasselbe wie das, was ich bekomme, wenn ich renneimport test während in../scriptpath in der IPython-Shell

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

oder (C) in einer Python-Shell

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

während, (D) wenn ich rennetest.py in meiner IDE (PyCharm) bekomme ich entweder

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

oder (E)

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

je nachdem, ob ich eine option zum einbinden des "content root" aktiviert habe oder nicht.

I denke ich verstehe woher die (i) Einträge in jedem Fall kommen: Alle verwenden mein System PYTHONPATH, außer PyCharm, das die vom Benutzer hinzugefügten Pfade am Ende von "Pfade" in "Interpreter-Einstellungen" verwendet; aber ich verstehe nicht, woher die anderen Einträge kommen (oder wie PyCharm mein System PYTHONPATH ignorieren kann).

Warum ist der.. scriptpath Eintrag vor und nach (i) manchmal wiederholt? Welche Regeln werden zum Hinzufügen der anderen Einträge verwendet (z. B./usr/local/bin in (B)?

Antworten auf die Frage(0)

Ihre Antwort auf die Frage