apache 部署python3_在Windows环境中使用Python3.5部署Apache2.4部署程序

在Linux 或OS X环境下部署网站很容易,可以选择的组合很多,如nginx+uwsgi或apache+mod_wsgi都可以。但到了Windows环境下就没有那么多选项了。使用Python开发的网站的话,只有Apache+mod_wsgi可以使用了。原来在Python3.4 下一直用的好好的,最近把Python升级到3.5.2之后,发现Apache服务器没办法启动了,经过一番折腾,终于搞定了。

原来一直以为Apache不支持Python3.5,反复的下载、重装Python、mod_wsgi等程序,折腾了好久。今天在网上看到一篇文章,上面提到要看日志,才突然明白自己原来一直在瞎折腾。

于是打开Apache的日志,看到下面这一段:

[Wed Sep 07 09:18:06.606497 2016] [wsgi:warn] [pid 5432:tid 508] mod_wsgi: Compiled for Python/3.5.1.

[Wed Sep 07 09:18:06.607499 2016] [wsgi:warn] [pid 5432:tid 508] mod_wsgi: Runtime using Python/3.5.2.

[Wed Sep 07 09:18:06.608499 2016] [mpm_winnt:notice] [pid 5432:tid 508] AH00455: Apache/2.4.16 (Win64) mod_wsgi/4.4.23 Python/3.5.2 configured -- resuming normal operations

[Wed Sep 07 09:18:06.608499 2016] [mpm_winnt:notice] [pid 5432:tid 508] AH00456: Apache Lounge VC14 Server built: Jul 22 2015 13:24:19

[Wed Sep 07 09:18:06.608499 2016] [core:notice] [pid 5432:tid 508] AH00094: Command line: 'c:\\apache24\\bin\\httpd.exe -d C:/Apache24'

[Wed Sep 07 09:18:06.610500 2016] [mpm_winnt:notice] [pid 5432:tid 508] AH00418: Parent: Created child process 1276

[Wed Sep 07 09:18:06.905541 2016] [wsgi:warn] [pid 1276:tid 412] mod_wsgi: Compiled for Python/3.5.1.

[Wed Sep 07 09:18:06.905541 2016] [wsgi:warn] [pid 1276:tid 412] mod_wsgi: Runtime using Python/3.5.2.

Fatal Python error: Py_Initialize: unable to load the file system codec

ImportError: No module named 'encodings'

看了日志后,以为是mod_wsgi和Python的版本不匹配,于是卸载了Python3.5.2,并重新安装上了Python3.5.1,结果发现还是无法启动Apache服务。

认真阅读了日志才发现自己理解错了。python和mod_wsgi的版本不匹配只是警告信息,真正严重的错误在于:无法load the file system codec,是因为无法引入encodings模块造成的。

进入终端模式后,试了一下导入encodings之后,发现是正常的。于是在网上百度了下,发现可能是因为PYTHONPATH变量未设置造成的。然后设置PYTHONPATH变量为“%USERPROFILE%\AppData\Local\Programs\Python\Python35\DLLs;%USERPROFILE%\AppData\Local\Programs\Python\Python35\Lib;%USERPROFILE%\AppData\Local\Programs\Python\Python35\Lib\site-packages”,然后再启动Apache服务器,发现一切正常了。

Python3.5是一个比较新的版本,很多东西和之前的版本不一样,下面这些环境变量都需要设置,否则可能会碰到意思不到的问题:

在PATH中增加路Python的相关路径

需要在PATH变量中增加%USERPROFILE%\AppData\Local\Programs\Python\Python35\Scripts和%USERPROFILE%\AppData\Local\Programs\Python\Python35。当然,这个可以在安装Python3.5的时候勾选一下就可以了,默认选项是不增加。

设置PYTHONPATH

这个需要新增PYTHONPATH变量,值设置成“%USERPROFILE%\AppData\Local\Programs\Python\Python35\DLLs;%USERPROFILE%\AppData\Local\Programs\Python\Python35\Lib;%USERPROFILE%\AppData\Local\Programs\Python\Python35\Lib\site-packages”。

增加PATHEXT增加Python脚本的扩展名

这个需要将.PY和.PYW增加到PATHEXT环境变量中。设置完成后执行Python脚本时,只需要输入文件名即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值