近期在努力把自己的项目从python2转到python3上,因为生产环境无法抛弃centos7,所以只好在centos7上安装了python3。装好了python3,将python命令软连接改成python3的,同时也将pip指向了python3版本的pip。一切都很顺利,但在用uwsgi启动一个django的web服务时才发现出了问题:服务是启动了,但是一访问接口就返回500,再一看uwsgi这边的日志,显示:no python application found 。

nginx+uwsgi+django的模式在之前多次配过,都没有出现问题啊,为啥一到了python3的环境下就出问题了?我的环境应该配置得差不多了啊,而且所有的模块也都是在python3的环境下装的啊。

再次检查了我的配置文件:

[uwsgi]
socket = 127.0.0.1:3031
chdir = /opt/testproj/
wsgi-file = testproj/wsgi.py
processes = 4
threads = 2

感觉也没有啥问题啊。于是又开始仔细查看uwsgi这边输出的日志,再往前看看,才看到了这么个报错:

*** Operational MODE: preforking+threaded ***
Traceback (most recent call last):
File "testproj/wsgi.py", line 12, in <module>
from django.core.wsgi import get_wsgi_application
ModuleNotFoundError: No module named 'django'
unable to load app 0 (mountpoint='') (callable not found or import error)
*** no app loaded. going in full dynamic mode ***

没有找到django模块?原来成功启动只是一个假象,实际上现在uwsgi没找到django这个模块,一提供服务肯定就500了。

但是为啥会没有找到django模块呢?uwsgi和django都是用python3的pip来装的啊,虽然这个centos7上还有python2,但也只是为了让yum还能正常使用而保留的啊。

在网上一顿找,才发现,uwsgi还真是有点特殊,在python2和python3共存的系统上就会有点问题,这次启动时无法找到django模块是因为uwsgi命令使用python2的环境来进行了启动。需要在配置文件中指定所需要的库环境才可以。

于是开始找django的环境,使用pip show可以看到django安装的location:

[root@knktc testproj]# pip show django|grep -i location
Location: /usr/local/lib64/python3.6/site-packages

顺便把pytz的路径也找下:

[root@knktc testproj]# pip show pytz|grep -i location
Location: /usr/local/lib/python3.6/site-packages

把这两个路径使用pythonpath参数加入到配置文件中,修改后的uwsgi配置文件是下面的这个样子的:

[uwsgi]
socket = 127.0.0.1:3031
chdir = /opt/testproj/
wsgi-file = testproj/wsgi.py
processes = 4
threads = 2
pythonpath = /usr/local/lib64/python3.6/site-packages
pythonpath = /usr/local/lib/python3.6/site-packages

再启动一次试试:

uwsgi --ini uwsgi.ini

一切正常!

最新文章

  1. js_多个引号的用法
  2. [翻译]:SQL死锁-阻塞探测
  3. 一个基于DDD的开源项目,各种技术!
  4. 每天一个Linux命令(7): cp
  5. (转载)Linux启动过程详解
  6. Android开发系列之搭建开发环境
  7. 数据转换错误,java.lang.NumberFormatException: null
  8. 传智播客C/C++学院年薪24-50万招聘C/C++讲师
  9. 一种转换Ipv6地址的方法
  10. 解决爬虫中遇到的js加密问题之有道登录js逆向解析
  11. Mysql 通用知识 2019-03-27
  12. azkaban的简单使用
  13. js设计模式(七)---模板方法模式
  14. break,continue的区别
  15. 自定义高级版python线程池
  16. [置顶] 九度笔记之 1494:Dota
  17. node.js 标准/错误输出 和 process.exit
  18. am335x SPI spi_d0, spi_d1 out, in 模式设定
  19. Ubuntu 18.04安装MongoDB 4.0(社区版)
  20. Eclipse maven构建springmvc项目

热门文章

  1. Tableau 练习题
  2. nginx日志说明
  3. [LeetCode] 374. Guess Number Higher or Lower 猜数字大小
  4. [LeetCode] 103. Binary Tree Zigzag Level Order Traversal 二叉树的之字形层序遍历
  5. 黑苹果MacOS安装记录
  6. java、ajax 跨域请求解决方案(&#39;Access-Control-Allow-Origin&#39; header is present on the requested resource. Origin &#39;请求源&#39; is therefore not allowed access.)
  7. Visual Studio 2017 无法启动,进程中却有devenv.exe运行的解决办法
  8. pandas的使用(7)--分组
  9. Redis学习之ziplist压缩列表源码分析
  10. [转帖]centos 7 avahi-daemon服务的作用及如何关闭