我试图在Ubuntu 16.04.6 LTS上使用anaconda python在uwsgi上运行django服务器。 我已经创建了一个conda环境并安装了所有依赖项。
如果我在dev(即python manage.py runserver)中运行django服务器,它将正常工作。但是,当我用uwsgi运行它时,出现“ ImportError:无法导入名称_remove_dead_weakref stackoverflow”
错误:
Traceback (most recent call last):
File "wsgi.py", line 11, in <module>
from django.core.wsgi import get_wsgi_application
File "/opt/myproj/venvs/api/lib/python2.7/site-packages/django/core/wsgi.py", line 2, in <module>
from django.core.handlers.wsgi import WSGIHandler
File "/opt/myproj/venvs/api/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 5, in <module>
import logging
File "/opt/myproj/venvs/api/lib/python2.7/logging/__init__.py", line 26, in <module>
import sys, os, time, cStringIO, traceback, warnings, weakref, collections
File "/opt/myproj/venvs/api/lib/python2.7/weakref.py", line 13, in <module>
from _weakref import (
ImportError: cannot import name _remove_dead_weakref
unable to load app 0 (mountpoint='') (callable not found or import error)
我已经设置了蟒蛇的路径
$ echo $PATH
/home/baji/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/baji/anaconda2/bin
$ echo $PYTHONPATH
/opt/myproj/venvs/api/bin/python
我正在尝试的uwsgi命令是
$ /opt/myproj/venvs/api/bin/uwsgi -H /opt/myproj/venvs/api/ -i /opt/myproj/api/wsgi.ini
这是wsgi.ini文件
[uwsgi]
module = wsgi:application
master = true
processes = 1
chmod-socket = 666
socket = /tmp/api.sock
check-static = ./static
wsgi-file = wsgi.py
touch-reload = /tmp/api.txt
buffer-size = 65535
post-buffering = 1
listen = 65535
vacuum = true
max-requests = 1000
stats = 3032
stats-http = true
非常感谢您的帮助。
答案 0 :(得分:0)
我已经解决了问题。在安装了conda版本的uwsgi之后,问题就消失了。
我必须更新这些文件才能使用uwsgi运行django服务器
conda install -c conda-forge uwsgi
conda install pip
pip install -r requirements.txt