Wie deaktiviere ich `site.ENABLE_USER_SITE` für eine Umgebung?

Aus den docs :

site.ENABLE_USER_SITE

Flag, der den Status des Benutzer-Site-Pakete-Verzeichnisses anzeigt. True bedeutet, dass es aktiviert ist und wurde zu sys.path hinzugefügt. False bedeutet, dass es durch Benutzeranforderung deaktiviert wurde (mit -s oder PYTHONNOUSERSITE ). Keine bedeutet, dass es aus Sicherheitsgründen deaktiviert wurde (Missverhältnis zwischen Benutzer- oder Gruppen-ID und effektiver ID) oder von einem Administrator.

Ich interessiere mich besonders für die Phrase oder durch einen Administrator . Auf Maschinen, auf denen ich ein Administrator bin (dh meine eigene), wie kann ich diese Option global deaktivieren, für einen bestimmten Interpreter ausführbare Datei?

Der Grund, warum ich das tun möchte, ist, dass neue Conda-Umgebungen dies ermöglichen lassen: https://github.com/conda/conda/issues/448

One Solution collect form web for “Wie deaktiviere ich `site.ENABLE_USER_SITE` für eine Umgebung?”

Der Wert dieser Variablen wird vollständig im Python-Code bestimmt :

 def check_enableusersite(): """Check if user site directory is safe for inclusion The function tests for the command line flag (including environment var), process uid/gid equal to effective uid/gid. None: Disabled for security reasons False: Disabled by user (command line option) True: Safe and enabled """ if sys.flags.no_user_site: return False if hasattr(os, "getuid") and hasattr(os, "geteuid"): # check process uid == effective uid if os.geteuid() != os.getuid(): return None if hasattr(os, "getgid") and hasattr(os, "getegid"): # check process gid == effective gid if os.getegid() != os.getgid(): return None return True 

Der erste Test ist einfach für den Schalter -s oder die PYTHONNOUSERSITE Umgebungsvariable verwendet worden.

Was bleibt, sind die Tests, die None wenn die effektive userid oder groupid sich von der process userid oder groupid unterscheiden.

Ein Administrator kann die effektive Benutzer-ID oder die Gruppen-ID-Bits festlegen , an welcher Stelle der effektive Benutzer der ausführbaren Datei an den Besitzer oder die Gruppe der ausführbaren Datei anstelle des Benutzers, der Python ausführt, geändert wird, an welcher Stelle die obige Funktion None .

Ansonsten kann ein sitecustomize.py Paket den Wert auf None und explizit User-Verzeichnisse aus dem Pfad wieder entfernen. Wenn ja, wird der usercustomize.py Importschritt übersprungen.

Python ist die beste Programmiersprache der Welt.