3 Stimmen

Übergabe von Optionen an eine ausführbare Python-Datei im nicht-interaktiven Modus

Ich würde gerne einige Optionen an Python (Version 2.6) übergeben, und zwar jedes Mal, nicht nur im interaktiven Modus. Gibt es eine Datei, in die ich solche Befehle eingeben kann?

EDIT: Insbesondere möchte ich die Deprecation-Warnungen zum Schweigen bringen.

0 Stimmen

Deprecation-Warnungen funktionieren in Python nicht so, wie sie sollten. Endbenutzer sollten sie nie sehen, nur Entwickler: sie sollten standardmäßig ausgeschaltet sein, nicht eingeschaltet, analog dazu, wie C Verwerfungen zeigen sich bei der Kompilierung oder Link-Zeit, nicht zur Laufzeit.

0 Stimmen

Ich stimme dem voll und ganz zu. Offensichtlich wollen wir alle Bibliotheken in Python 3.x arbeiten, aber ich sollte nicht haben, um Warnungen zu sehen aus importierten Bibliotheken Die ganze Zeit!

6voto

Omnifarious Punkte 52299

El #!/usr/bin/python Zeile am Anfang eines Python-Skripts unter Linux kann verwendet werden, um auch Optionen an den Interpreter zu übergeben.

Außerdem gibt es eine Reihe von Modulen, die beim Start von Python importiert werden. Auf meinem System ist es wahrscheinlich, dass die Optionen in der von anderen Postern vorgeschlagenen Art und Weise hier eingestellt werden können:

/usr/lib/python2.6/site-packages/sitecustomize.py

Wenn Sie einfach diesen Code in die Datei einfügen:

import warnings
warnings.simplefilter("ignore", DeprecationWarning)

schaltet es die Verwerfungswarnungen für alles immer aus, was vielleicht nicht das ist, was Sie wollen. Sie könnten stattdessen Code einfügen, der Ihre eigenen PYTHONNODEPRECATIONWARNING Umgebungsvariable, damit Sie mehr Kontrolle haben.

Nach Suche nach einem Verweis auf sitecustomize.py in Dive Into Python und dies Verweis auf das sitecustomize Modul in der Python 2.6 Dokumentation Ich denke, diese Datei ist die beste Lösung für Ihr Anliegen. In Python 2.6, mit seiner benutzerspezifischen site-packages Verzeichnis ist es möglich, dies auf einer pro-Benutzer-Basis zu setzen, obwohl Sie vielleicht wollen, um eine systemweite sitecustomize.py Datei zu finden und entweder kopieren Sie es in Ihre oder einen Weg finden, um es explizit in Ihrem importieren.

0 Stimmen

Hervorragend, und vielen Dank. Ich denke, so werde ich vorgehen, und ich werde es für einen (ich wage es zu sagen) "use strict;" Effekt einschalten

0 Stimmen

Schön, dass Ihnen die Antwort gefallen hat :-) Ich finde es irgendwie amüsant, dass die Leute Herrn 63,9k immer noch aufmotzen wollen, obwohl seine Antwort eindeutig nicht deine Frage beantwortet. Er muss einen ziemlichen Fanclub haben :-)

0 Stimmen

Wie kann dies in Python3 implementiert werden?

3voto

Alex Martelli Punkte 805329

Die meisten der Optionen können als Umgebungsvariablen übergeben werden -- do python -h um die Liste zu sehen:

$ py26 -h|grep PYTH
-B     : don't write .py[co] files on import; also PYTHONDONTWRITEBYTECODE=x
-d     : debug output from parser; also PYTHONDEBUG=x
-E     : ignore PYTHON* environment variables (such as PYTHONPATH)
         if stdin does not appear to be a terminal; also PYTHONINSPECT=x
-O     : optimize generated bytecode slightly; also PYTHONOPTIMIZE=x
-s     : don't add user site directory to sys.path; also PYTHONNOUSERSITE
-u     : unbuffered binary stdout and stderr; also PYTHONUNBUFFERED=x
-v     : verbose (trace import statements); also PYTHONVERBOSE=x
PYTHONSTARTUP: file executed on interactive startup (no default)
PYTHONPATH   : ':'-separated list of directories prefixed to the
PYTHONHOME   : alternate <prefix> directory (or <prefix>:<exec_prefix>).
PYTHONCASEOK : ignore case in 'import' statements (Windows).
PYTHONIOENCODING: Encoding[:errors] used for stdin/stdout/stderr.

Sind Sie mit anderen Flags beschäftigt, die nicht über Umgebungsvariablen gesetzt werden können?

PS die PYTHONINSPECT=x ist das Äquivalent zu -i (die grep schneiden Sie diese Information aus, denn sie wird sofort angezeigt vorherige Zeile;-).

0 Stimmen

Ich beschäftige mich nämlich mit anderen Variablen als diesen. Ich habe meine Frage geändert.

1voto

Roman Punkte 2762

Haben Sie versucht ~/.pythonrc.py? Es ist in der Python-Manpage mit der folgenden Beschreibung aufgeführt:

Benutzerspezifische Initialisierungsdatei wird vom Benutzermodul geladen; wird nicht Standard oder von den meisten Anwendungen verwendet.

Ich bin mir nicht sicher, was mit dem Modul "Benutzer" gemeint ist, aber ich denke, es ist einen Versuch wert, dies auszuprobieren.

EDIT: Es sieht so aus, als müssten Sie import user in Ihre Python-Skripte einfügen, dann wird Python diese Datei ~/.pythonrc.py automatisch beim Starten ausführen (und nicht nur im interaktiven Modus). Dies sollte in Python Version < 3.0 funktionieren. http://docs.python.org/library/user.html

1voto

benno Punkte 2047

Es tut mir leid, ich verstehe Ihre Frage nicht ganz, aber Sie könnten es versuchen:

import warnings
warnings.simplefilter("ignore", DeprecationWarning)

Das ist also keine wirkliche Antwort auf die Frage.

1 Stimmen

Ich danke Ihnen. Ich wusste das nicht, und das hat mir geholfen, eine bessere Antwort auf das Problem des Auftraggebers zu geben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X