2016-05-13 43 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测试因为我认为这可能是问题。并且还改变了文件夹权限。但仍然没有运气 –