2016-05-13 49 views
1

這真是奇怪的情況。 我想從頭開始創建一個使用Python的web框架。 我試圖使用下面的代碼來獲取當前工作目錄(技術上當前.py文件的完整路徑)。刷新頁面後,當前工作目錄在python中顯示不同

os.getcwd() 

的問題是.. 如果我輸入上面的代碼並重啓uwsgi服務器,然後打印出來。 在第一次,它總是打印如下。

/var/www/html/mydocroot 

然後,如果我刷新頁面,'mydocroot'目錄會自動消失,如下所示。

/var/www/html 

而且它在刷新頁面後創建相同的輸出如上。 我花了幾乎整整一天的時間來找出這個問題。 任何想法或相同的經驗?

而且我試過了,

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

這一次爲好。

例如,

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

是結果,當我重新啓動uwsgi服務器,

/var/www/html/Core/Settings 

當我刷新頁面, 'mydocroot' 本身如上消失。

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; 
 
    } 
 
}

以上就是我的nginx服務器配置。下面是wsgi配置。

[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

? –

+0

我在ubuntu下使用nginx服務器。我有16年的PHP開發經驗。但在這種情況下,這很奇怪。結果應該一直如前面提到的一樣.. –

+0

什麼是wsgi服務器? –

回答

1

文件不具有 「當前工作目錄」。一個給定的過程只有一個全局當前工作目錄。當前的工作目錄可以改變

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

如果你想有一個特定的文件的目錄,你可以在你使用的是什麼Web服務器和WSGI服務器做到這一點

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

我也試過這個代碼,但它打印的是相同的。 –

+0

是的,但它應該每次打印**相同的東西**,它不應該在隨後的調用中更改。 –

+0

這很奇怪是不是?我關閉viltualenv測試因爲我認爲這可能是問題。並且還改變了文件夾權限。但仍然沒有運氣 –