转:anaconda django配置uwsgi出现的错误
1 端口
日志:bind(): Address already in use [core/socket.c line 769]
原因:当前端口被使用。
解决:解决端口占用即可,懒得去找被谁占用了,很可能是被uwsgi之前的进程占用了。我是在排查问题,不是在求真,所以不浪费精力去排查到底被谁占用了,直接换个端口往下走。
2 插件
日志:no request plugin is loaded, you will not be able to manage requests.
原因:缺少插件。
解决:在uwsgi.ini中添加plugin = python3
3 django
日志:ModuleNotFoundError: No module named 'django'
原因:找不到django。
解决:在uwsgi.ini中添加home = /home/<username>/anaconda3/envs/django
4 encoding
日志:ModuleNotFoundError: No module named 'encodings'
原因:找不到encodings。
起因:我的uwsgi是用apt-get安装的,djjango是在虚拟环境下用pip安装的,两者python版本不一致。
解决:卸载uwsgi,到虚拟环境下用conda安装uwsgi,命令:conda install -c conda-forge uwsgi
备注:到虚拟环境下用pip安装uwsgi不可以,会由于gcc不一致报错。
重新创建项目,重新来过。
5 解决问题
前面所有的问题,都是python版本不一致导致的,只要解决了版本,所有问题就都不存在了。
针对版本的问题,网上搜到的解决方案都是针对virtualenv的,而我使用anaconda,思路是一样的,具体操作有点差别。
关键步骤:
虚拟环境下用conda安装uwsgi,命令:conda install -c conda-forge uwsgi。