Python uwsgi w/virtualenv nositepackages import site=AttributeError{'userbase'}

2024-10-01 09:19:28 发布

您现在位置:Python中文网/ 问答频道 /正文

长话短说,我有一个nginx/uwsgi部署,我不能使用

import site

在不引发错误的部署脚本中

^{pr2}$

如果我使用系统路径追加对于所有的东西,它都是有效的,尽管它不遵循任何鸡蛋路径链接

参考文献:

在nginx.conf公司在

server {
    listen 80;
    server_name example.com;

    access_log /home/PROJECT/logs/nginx/access.log;
    error_log /home/PROJECT/logs/nginx/error.log;
    client_max_body_size 10m;
    keepalive_timeout 120;

    location /static/ {
#        root /home/PROJECT/virtualenv/PROJECT/;
        alias /home/PROJECT/virtualenv/PROJECT/static/;
        autoindex on;
#        error_page 404 = "404";
    }
    location /media/ {
#        root /home/PROJECT/virtualenv/PROJECT/;
        alias /home/PROJECT/virtualenv/PROJECT/media/;
        autoindex on;
        error_page 404 = "404";
    }
    location / {
        uwsgi_pass uwsgi_main;
        include uwsgi_params;
        uwsgi_param UWSGI_PYHOME /home/PROJECT/virtualenv;
        uwsgi_param UWSGI_SCRIPT deploy.deploy;
        uwsgi_param UWSGI_CHDIR /home/PROJECT/virtualenv/PROJECT;
        root /home/PROJECT/virtualenv;
    }
}

uwsgi新贵脚本

description "uWSGI starter"
start on (local-filesystems
and runlevel [2345])
stop on runlevel [016]
respawn
exec /usr/local/sbin/uwsgi \
--uid www-data \
--socket 127.0.0.1:5050 \
--master \
--logto /var/log/uwsgi_main.log \
--logdate \
--optimize 2 \
--processes 2 \
--harakiri 120 \
--vhost \
--no-site

在部署.py在

import sys 
import site 
import os 

envroot = '/home/project/virtualenv' 
#envroot = os.path.join(os.path.abspath(__file__), '../..') 

prev_sys_path = list(sys.path) 
site.addsitedir(os.path.join(envroot, 'lib/python2.7/site-packages')) 
sys.path.append(os.path.join(envroot, 'project')) 

new_sys_path = [p for p in sys.path if p not in prev_sys_path] 
for item in new_sys_path: 
    sys.path.remove(item) 
sys.path[:0] = new_sys_path 

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' 
from django.core.handlers.wsgi import WSGIHandler 
application = WSGIHandler()

有什么想法吗?解决问题的方法??在

目标是能够使用virtualenv设置python路径,它遵循.egg&;.pth文件中的路径链接


Tags: pathimport路径projectloghomevirtualenvos
1条回答
网友
1楼 · 发布于 2024-10-01 09:19:28

我对uwsgi和nginx配置不是很熟悉。但我知道您需要使用virtualenv提供的python解释器运行WSGI应用程序运行程序deploy.py/home/project/virtualenv/bin/python在你的情况下。在

您有可能拥有uWSGI 0.9.7或更高版本。在本例中,这里是您的问题的workaround。此邮件列表中有此问题已在tip中修复的信息。这可能意味着它已经在当前稳定的0.9.9版本中修复了。在

相关问题 更多 >