【发布时间】:2018-08-12 07:19:49
【问题描述】:
我有一个以前在 apache2 上使用 python3.5 运行的烧瓶应用程序。
我现在正在尝试将其更改为在 3.6 上运行(我的代码中有类型提示,仅在 3.6 上受支持)。
我已经为 python3.6 安装了模块,但是当尝试重新启动 apache 并运行我的应用程序时,它失败了。
运行时
mod_wsgi-express module-location
我有python3.5版本
/usr/local/lib/python3.5/dist-packages/mod_wsgi/server/mod_wsgi-py35.cpython-35m-x86_64-linux-gnu.so
我的服务器上的 python3.6 目录中也存在相同的文件。
我还更改了我的 $PATH 以运行 python3.6 作为 python 的默认值。
我怎样才能告诉 apache 在 python3.6 而不是 3.5 上运行?
【问题讨论】:
-
定义“失败”。如果没有错误消息的详细信息或失败的指示,就无法猜测。另外,如果安装了系统 mod_wsgi,您是否从 Apache 卸载了系统 mod_wsgi?您是否运行了
mod_wsgi-express module-config来获取配置,您应该将其添加到Apache 配置中以使其加载使用pip构建的版本?阅读pypi.python.org/pypi/mod_wsgi了解更多详情。 -
感谢您的回复。它失败了,这意味着浏览该站点返回“内部服务器错误”并且 apache 日志文件显示“为 Python/2.7.11 编译”。和“使用 Python/2.7.12 的运行时。”。什么是“系统 mod_wsgi”,如何卸载特定系统 mod_wsgi?我确实运行了 mod_wsgi-express module-config,但是当尝试将它添加到“/etc/apache2/apache2.conf”文件并重新启动 apache 时,在 apache 日志中它看起来仍然在运行 python27
-
如果您在错误日志中没有收到任何错误,则您的 Python Web 框架很可能生成了错误并且没有记录它。你用的是什么网络框架?关于Python版本,在将
pip install版本集成到Apache配置之前是否卸载了系统mod_wsgi包。 -
我做到了 (
sudo apt-get remove libapache2-mod-wsgi)。然后通过 pip 安装模块。在我这样做之后,apache中的错误描述了flask正在运行python3.5,并且错误是语法错误(我使用了仅在python3.6+中允许的类型提示)。所以问题是我有两个 python3 版本,但我想在 python3.6 上运行。有没有可以告诉 mod_wsgi 执行哪个 python3 版本的配置文件? -
我还将符号链接
python3更改为指向 3.6
标签: apache2 python-3.5 mod-wsgi python-3.6