python - 在 Windows 上使用 apache mod_wsgi 运行烧瓶应用程序时的导入冲突
问题描述
我允许你问你一个问题,我在 Windows 上使用你的 mod_wsgi 移植托管烧瓶应用程序
我有两个烧瓶应用程序,由于导入冲突,只有一个可以同时存在
即:如果请求应用程序 1 我有响应然后如果我请求应用程序 2 我有内部服务器错误日志中有错误...然后如果我重新启动 apache 并请求应用程序 2 我有响应但如果我请求应用程序 1 我有相同的内部服务器错误如果我评论一些像 numpy 这样的导入,两个应用程序可以同时处于活动状态
如果您对此问题有任何想法或链接或答案,将不胜感激?
我的安装描述如下
提前感谢您的游览时间和您的作品
亚历山大
错误
mod_wsgi (pid=4936) 的日志:无法执行 Python 脚本文件“D:/exec/Apache24/htdocs/wsgi/api_test_2.wsgi”。
mod_wsgi (pid=4936):处理 WSGI 脚本“D:/exec/Apache24/htdocs/wsgi/api_test_2.wsgi”时发生异常。
回溯(最后一次调用):
文件“D:/exec/Apache24/htdocs/wsgi/api_test_2.wsgi”,第 3 行,
从 api_test_2 导入应用程序作为应用程序
文件“D:/exec/wsgi_api/api_test_2\api_test_2.py ",第 2 行,
导入 numpy
文件 "c:\python\python36\lib\site-packages\numpy\__init__.py",第 142 行,
从 . 导入核心
文件“c:\python\python36\lib\site-packages\numpy\core\__init__.py”,
从 。导入多数组
文件“c:\python\python36\lib\site-packages\numpy\core\multiarray.py”,第 12 行,
从 . import overrides
File "c:\python\python36\lib\site-packages\numpy\core\overrides.py", line 46, in
""")
RuntimeError: implement_array_function 方法已经有一个文档字符串
#---------------------------------
# file : D:/exec/wsgi_api/api_test_1/api_test_1.py
#---------------------------------
from flask import Flask, jsonify,render_template, request, make_response
import numpy
app = Flask(__name__)
@app.route('/')
def home():
resp = make_response("hello from 1", 200)
resp.headers['Content-Type'] = 'charset=utf-8'
return resp
#---------------------------------
#---------------------------------
# file : D:/exec/wsgi_api/api_test_2/api_test_2.py
#---------------------------------
from flask import Flask, jsonify,render_template, request, make_response
import numpy
app = Flask(__name__)
@app.route('/')
def home():
resp = make_response("hello from 2", 200)
resp.headers['Content-Type'] = 'charset=utf-8'
return resp
if __name__ == '__main__':
app.run(host='127.0.0.1', port=36000)
#---------------------------------
我在 appache httpdocs 中有这两个 wsgi 文件
#---------------------------------
# file : D:/exec/Apache24/htdocs/wsgi/api_test_1.wsgi
#---------------------------------
import sys
sys.path.append('D:/exec/wsgi_api/api_test_1/')
from api_test_1 import app as application
#---------------------------------
#---------------------------------
# file : D:/exec/Apache24/htdocs/wsgi/api_test_2.wsgi
#---------------------------------
import sys
sys.path.append('D:/exec/wsgi_api/api_test_1/')
from api_test_1 import app as application
#---------------------------------
#---------------------------------
In D:/exec/Apache24/conf/httpd.conf i add the line
#---------------------------------
WSGIScriptAlias /api_test_1 "D:/exec/Apache24/htdocs/wsgi/api_test_1.wsgi"
WSGIScriptAlias /api_test_2 "D:/exec/Apache24/htdocs/wsgi/api_test_2.wsgi"
#---------------------------------
解决方案
我对 mod_wsgi 邮件列表进行了讨论,我得到了相同的响应解释是 numpy 在 Python 子解释器中不起作用,因为 C 扩展模块没有正确实现以允许这样做,因此对于 mod_wsgi,您只能在主解释器上下文,由 'WSGIApplicationGroup %{GLOBAL}' 指令强制
推荐阅读
- javascript - 尝试将 fullcalendar 呈现为自定义 html 元素时出现 Javascript 错误“el.addClass 不是函数”
- c++ - 非静态成员的线程调用函数失败
- c++ - 递归乘法 - 如何添加值?
- python - 为什么我不能在课堂上使用 matplotlib 和 tkinter
- android - Android片段的继承与参数
- python - 熊猫设置单元格长度
- android - Android 渲染:其实最后一切都是通过 OpenGL 渲染的
- r - 如何更正产生差异的初始值 NA
- asp.net - AWS Elastic Beanstalk .NET App 的文件在上传和部署后没有改变
- java - java.lang.IllegalStateException:无法将节点从一个状态树移动到另一个状态树 - Vaadin