Python从wsgi导入失败的问题解决方法

 更新时间:2025年04月23日 10:39:47   作者:qq^^614136809  
本文主要介绍了Python从wsgi导入失败的问题解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在一个apache2/flask服务器上,有一个文件夹结构如下:

/var/www/myapp
/var/www/myapp/routing.py
/var/www/myapp/__init__.py
/var/www/wsgi-scripts/myapp.wsgi

myapp文件夹中的应用程序文件(routing.py)如下:

from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')
def welkom():
    return render_template('welkom.html')


if __name__ == '__main__':
    app.debug = 'True'
    app.run()

wsgi-scripts中的myapp.wsgi文件如下:

import sys
sys.path.insert(0, '/var/www/myapp')
from myapp import routing as application

但是当我加载页面时,日志中出现以下错误:

[Fri Mar 15 08:06:32 2013] [error] [client 192.168.1.11] mod_wsgi (pid=23574): Target WSGI script '/var/www/wsgi-scripts/myapp.wsgi' cannot be loaded as Python module.
[Fri Mar 15 08:06:32 2013] [error] [client 192.168.1.11] mod_wsgi (pid=23574): Exception occurred processing WSGI script '/var/www/wsgi-scripts/myapp.wsgi'.
[Fri Mar 15 08:06:32 2013] [error] [client 192.168.1.11] Traceback (most recent call last):
[Fri Mar 15 08:06:32 2013] [error] [client 192.168.1.11]   File "/var/www/wsgi-scripts/myapp.wsgi", line 3, in <module>
[Fri Mar 15 08:06:32 2013] [error] [client 192.168.1.11]     import myapp.routing as application
[Fri Mar 15 08:06:32 2013] [error] [client 192.168.1.11] ImportError: No module named myapp.routing
[Fri Mar 15 08:06:32 2013] [error] [client 192.168.1.11] mod_wsgi (pid=23575): Target WSGI script '/var/www/wsgi-scripts/myapp.wsgi' cannot be loaded as Python module.
[Fri Mar 15 08:06:32 2013] [error] [client 192.168.1.11] mod_wsgi (pid=23575): Exception occurred processing WSGI script '/var/www/wsgi-scripts/myapp.wsgi'.
[Fri Mar 15 08:06:32 2013] [error] [client 192.168.1.11] Traceback (most recent call last):
[Fri Mar 15 08:06:32 2013] [error] [client 192.168.1.11]   File "/var/www/wsgi-scripts/myapp.wsgi", line 3, in <module>
[Fri Mar 15 08:06:32 2013] [error] [client 192.168.1.11]     import myapp.routing as application
[Fri Mar 15 08:06:32 2013] [error] [client 192.168.1.11] ImportError: No module named myapp.routing
[Fri Mar 15 08:06:33 2013] [error] [client 192.168.1.11] mod_wsgi (pid=23577): Target WSGI script '/var/www/wsgi-scripts/myapp.wsgi' cannot be loaded as Python module.
[Fri Mar 15 08:06:33 2013] [error] [client 192.168.1.11] mod_wsgi (pid=23577): Exception occurred processing WSGI script '/var/www/wsgi-scripts/myapp.wsgi'.
[Fri Mar 15 08:06:33 2013] [error] [client 192.168.1.11] Traceback (most recent call last):
[Fri Mar 15 08:06:33 2013] [error] [client 192.168.1.11]   File "/var/www/wsgi-scripts/myapp.wsgi", line 3, in <module>
[Fri Mar 15 08:06:33 2013] [error] [client 192.168.1.11]     import myapp.routing as application
[Fri Mar 15 08:06:33 2013] [error] [client 192.168.1.11] ImportError: No module named myapp.routing
[Fri Mar 15 08:06:33 2013] [error] [client 192.168.1.11] mod_wsgi (pid=23573): Target WSGI script '/var/www/wsgi-scripts/myapp.wsgi' cannot be loaded as Python module.
[Fri Mar 15 08:06:33 2013] [error] [client 192.168.1.11] mod_wsgi (pid=23573): Exception occurred processing WSGI script '/var/www/wsgi-scripts/myapp.wsgi'.
[Fri Mar 15 08:06:33 2013] [error] [client 192.168.1.11] Traceback (most recent call last):
[Fri Mar 15 08:06:33 2013] [error] [client 192.168.1.11]   File "/var/www/wsgi-scripts/myapp.wsgi", line 3, in <module>
[Fri Mar 15 08:06:33 2013] [error] [client 192.168.1.11]     import myapp.routing as application
[Fri Mar 15 08:06:33 2013] [error] [client 192.168.1.11] ImportError: No module named myapp.routing

解决方案

问题的原因是Python从wsgi导入失败,可能是因为以下原因:

  • myapp.routing模块没有被正确导入。
  • myapp.routing模块没有被正确定义。

方法一:

第一个答案中给出的解决方案是:

  • 直接导入routing模块,而不是myapp.routing模块。
  • 将application定义为一个函数,而不是一个模块。

代码示例:

# myapp.wsgi
import sys
sys.path.insert(0, '/var/www/myapp')

from routing import app as application
# routing.py
def app(environ, start_response):
    app.debug = 'True'
    app.run()

方法二:

第二个答案中给出的解决方案是:

  • 使用site.addsitedir()函数将myapp目录添加到Python的包路径中。
  • 使用sys.path[:] = new_sys_path将新路径放在Python的包路径的前面。

代码示例:

# myapp.wsgi
ALLDIRS = ['/var/www/myapp/']

import sys 
import site 

# Remember original sys.path.
prev_sys_path = list(sys.path) 

# Add each new site-packages directory.
for directory in ALLDIRS:
  site.addsitedir(directory)

# Reorder sys.path so new directories at the front.
new_sys_path = [] 
for item in list(sys.path): 
    if item not in prev_sys_path: 
        new_sys_path.append(item) 
        sys.path.remove(item) 
sys.

 到此这篇关于Python从wsgi导入失败的问题解决方法的文章就介绍到这了,更多相关Python wsgi导入失败内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python descriptor(描述符)的实现

    Python descriptor(描述符)的实现

    这篇文章主要介绍了Python descriptor(描述符)的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • python连接mongodb密码认证实例

    python连接mongodb密码认证实例

    今天小编就为大家分享一篇python连接mongodb密码认证实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • Face++ API实现手势识别系统设计

    Face++ API实现手势识别系统设计

    这篇文章主要为大家详细介绍了Face++ API实现手势识别系统设计,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • python日期时间转为字符串或者格式化输出的实例

    python日期时间转为字符串或者格式化输出的实例

    今天小编就为大家分享一篇python日期时间转为字符串或者格式化输出的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • numpy:np.newaxis 实现将行向量转换成列向量

    numpy:np.newaxis 实现将行向量转换成列向量

    今天小编就为大家分享一篇numpy:np.newaxis 实现将行向量转换成列向量,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • 解决Windows下PowerShell无法进入Python虚拟环境问题

    解决Windows下PowerShell无法进入Python虚拟环境问题

    这篇文章主要介绍了解决Windows下PowerShell无法进入Python虚拟环境问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • 详解Django框架中的视图级缓存

    详解Django框架中的视图级缓存

    这篇文章主要介绍了详解Django框架中的视图级缓存,Django是最具人气的Python web开发框架,需要的朋友可以参考下
    2015-07-07
  • python爬虫 execjs安装配置及使用

    python爬虫 execjs安装配置及使用

    这篇文章主要介绍了python爬虫 execjs安装配置及使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • pytest-sugar 执行过程中显示进度条的脚本分享

    pytest-sugar 执行过程中显示进度条的脚本分享

    Pytest-sugar是一款用来改善控制台显示的插件,增加了进度条显示,使得在用例执行过程中可以看到进度条,而且进度条是根据用例是否通过标注不同颜色,非常醒目,接下来通过本文给大家分享下pytest sugar 显示进度条的脚本,感兴趣的朋友一起看看吧
    2022-12-12
  • Python程序打包成EXE的四种方法详解与实战

    Python程序打包成EXE的四种方法详解与实战

    将Python代码打包成可执行文件是一种使你的应用程序更易于分享和分发的方法,本文一步一步地教你如何用 Pyinstaller 模块将Python程序打包成exe文件,这篇教程绝对是全网最全面、最详细的教程,包含四种打包的方法,需要的朋友可以参考下
    2025-07-07

最新评论