zoukankan      html  css  js  c++  java
  • uwsgi no python application found错误的解决(python3+centos6)

    近期在努力把自己的项目从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
    一切正常!

  • 相关阅读:
    个性化联邦学习算法框架发布,赋能AI药物研发
    ES入门 (2) 数据格式/类型
    ES入门 (1) 使用基础(1)安装(1) WIN 单机
    Java 之 JDBC:(十)Spring的JDBCTemplate
    Java 之 JDBC:(九)Apache-DBUtils实现CRUD操作
    Java 之 JDBC:(八)数据库连接池
    Java 之 JDBC:(七)DAO及相关实现类
    Java 之 JDBC:(六)数据库事务
    Java 之 JDBC:(五)批量插入
    第七节:循环结构
  • 原文地址:https://www.cnblogs.com/vinic-xxm/p/11780666.html
Copyright © 2011-2022 走看看