Hallo,
wenn ich globale Variablen auch in Unterfenstern bearbeiten möchte, funktioniert der Import eines Moduls, welches die Variable initialisiert, ohne Probleme: alle können den Wert der Variable modifizieren (
http://python.sandtner.org/viewtopic.ph ... 067f8b5ee3).
Aber: Wenn ich mit QProcess ein neues Script (ohne Klassen, nur Funktionen) starte und das besagte Modul importiere, bekomme ich den Initialisierungswert der Variable und nicht - wie ich es natürlich möchte - den mittlerweile modifizierten Wert. Wie macht man das? Klar, man könnte den Wert in eine Datei schreiben und diese als Argument beim Start des Scripts übergeben, aber es muss doch auch einfacher gehen. Danke im voraus.
max
EDIT mawe: hab mal den Link zum Link gemacht
Nochmal externe Variablen, diesmal mit QProcess
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Musst du nicht auf das global einmal importierte Modul zugreifen und nicht auf eine neue Instanz des Moduls? Du kannst nämlich in jedem Namespace das Modul importieren, dadurch bekommst du eben die initialen Werte.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi,
nö musst du nicht, Module werden pro Interpreterinstanz nur beim ersten import initialisiert, bei jedem weiteren Import, in der selben Interpreterinstanz, wird nur ein Zeiger auf das bereits initialisierte Modul zurückgegeben.
Ich kenne QProcess nicht, aber es scheint für jeden Prozess eine neue Interpreterinstanz zu bilden. Daher wird jedesmal ein neues Modulobjekt erzeugt und initialisiert. Ich denke, du wirst um eine Datei in die du die Werte schreibst und aus der du sie bei Bedarf wieder einliest nicht rumkommen.
Such mal bei den Codesnippets nach file_to_dict.
Gruß
Dookie
nö musst du nicht, Module werden pro Interpreterinstanz nur beim ersten import initialisiert, bei jedem weiteren Import, in der selben Interpreterinstanz, wird nur ein Zeiger auf das bereits initialisierte Modul zurückgegeben.
Ich kenne QProcess nicht, aber es scheint für jeden Prozess eine neue Interpreterinstanz zu bilden. Daher wird jedesmal ein neues Modulobjekt erzeugt und initialisiert. Ich denke, du wirst um eine Datei in die du die Werte schreibst und aus der du sie bei Bedarf wieder einliest nicht rumkommen.
Such mal bei den Codesnippets nach file_to_dict.
Gruß
Dookie
[code]#!/usr/bin/env python
import this[/code]
import this[/code]
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ach so! Das spart Resourcen, aber logisch finde ich das nicht.Dookie hat geschrieben:nö musst du nicht, Module werden pro Interpreterinstanz nur beim ersten import initialisiert, bei jedem weiteren Import, in der selben Interpreterinstanz, wird nur ein Zeiger auf das bereits initialisierte Modul zurückgegeben.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Das mit der neuen Interpreterinstanz scheint Sinn zu machen, immerhin startet QProcess alles mögliche solange man es als "arg0" + "arg1" + ... formulieren kann. In meinem Fall ist es eben "python" + "-u" + "<scriptname>" + "<arg>" um eine ungepufferte Ausgabe in ein QTextEdit zu kriegen.
Danke an Euch beide für die Tipps, cooles Board.
Grüße
max
@mawe: keine Sorge, ich lerne es noch
Danke an Euch beide für die Tipps, cooles Board.
Grüße
max
@mawe: keine Sorge, ich lerne es noch