2016-05-13 2 views
1

Dies ist wirklich seltsame Situation. Ich versuche, ein Web-Framework mit Python von Grund auf neu zu erstellen. Und ich versuche, das aktuelle Arbeitsverzeichnis (technisch den vollständigen Pfad der aktuellen .py-Datei) einer Datei mit dem folgenden Code zu erhalten.Aktuelle Arbeitsverzeichnis zeigt in Python anders nach der Aktualisierung der Seite

os.getcwd() 

Das Problem ist .. Wenn ich oben Code eingeben und starten uwsgi Server dann ausdrucken. Beim ersten Mal druckt es immer wie folgt.

Dann, wenn ich die Seite aktualisiere, verschwindet 'meinDocroot' Verzeichnis automatisch wie unten.

/var/www/html 

Und es erstellt die gleiche Ausgabe nach dem Aktualisieren der Seite wie oben. Ich verbrachte fast den ganzen Tag, um dieses Problem herauszufinden. Irgendeine Idee oder gleiche Erfahrungen?

und auch habe ich versucht,

os.path.dirname(os.path.abspath(__file__)) 

dieses auch.

Zum Beispiel

/var/www/html/mydocroot/Core/Settings 

ist das Ergebnis, wenn ich uwsgi Server neu starten,

/var/www/html/Core/Settings 

Wenn ich die Seite aktualisieren, 'mydocroot' wie oben von selbst verschwindet.

server{ 
 
     server_name example.com; 
 
     rewrite ^(.*) http://www.example.com permanent; 
 
} 
 

 
server { 
 
    listen 80; 
 
    server_name example.com *.example.com; 
 

 
    location/{ 
 
     include   uwsgi_params; 
 
     uwsgi_pass  unix:/var/www/html/example/myapp.sock; 
 
    } 
 
}

Oben ist meine nginx Serverkonfiguration. und unten ist wsgi konfiguration.

[uwsgi] 
 
module = wsgi:application 
 

 
master = true 
 
processes = 1 
 
touch-reload = /var/www/html/ggr/wsgi.py 
 
socket = myapp.sock 
 
chmod-socket = 664 
 
vacuum = true 
 
max-requests = 1 
 
die-on-term = true 
 
logger = file:/var/log/ggr.log 
 
catch-exceptions = true

+0

, was Web-Server und wsgi Server verwenden Sie? –

+0

Ich benutze unter Nginx Server auf Ubuntu. Ich habe 16 Jahre Erfahrung als PHP-Entwickler. Aber in diesem Fall .. ist es ziemlich komisch. Das Ergebnis sollte die gleiche Zeit sein, wie Sie zuvor erwähnt haben. –

+0

Was wsgi Server? –

Antwort

1

Dateien haben keinen "aktuellen Arbeitsverzeichnis". Es gibt nur ein globales aktuelles Arbeitsverzeichnis für einen bestimmten Prozess. Das aktuelle Arbeitsverzeichnis

ändern
os.chdir('/new/working/directory') 

Wenn Sie das Verzeichnis einer bestimmten Datei möchten, können Sie dies tun

os.path.dirname(os.path.abspath(__file__)) 
+0

Ich habe diesen Code auch ausprobiert, aber es druckt dasselbe. –

+0

Ja, aber es sollte die gleiche Sache jedes Mal ** drucken, es sollte sich bei nachfolgenden Anrufen nicht ändern. –

+0

Es ist ziemlich seltsam, nicht wahr? Ich habe viltualenv zum Testen ausgeschaltet, weil ich dachte, es könnte das Problem sein.und änderte auch Ordner Erlaubnis. aber immer noch kein Glück dabei –

Verwandte Themen