我一直在努力让它发挥作用,并在各处搜索并阅读页面并向下翻页,但似乎没有找到答案。
我有一个带有mod_wsgi的Apache和一个简单的测试Flask应用程序。
我使用它工作了: https://www.jakowicz.com/flask-apache-wsgi/
然后我以某种方式发现Apache mod_wsgi使用了系统python,我想使用venv(https://docs.python.org/3/library/venv.html)。
我的应用程序位于具有venv的正常目录结构的目录中,但是如何让我的应用程序使用它?
我发现了这个: http://blog.dscpl.com.au/2014/09/using-python-virtual-environments-with.html
但如果我放入python-home,我的应用程序就失败了。
几个问题: 如何找到我的应用程序使用的Python版本? 我如何找到我的mod_wsgi版本? 如何让我的应用程序使用我的venv?
我是Python和WSGI的新手,我主要使用PHP。
希望有人可以向我解释该怎么做......
- Ronni
答案 0 :(得分:2)
如何找到我的应用正在使用的Python版本?
参见文档:
它为您提供了可以使用的测试。
如何找到我的mod_wsgi版本?
使用WSGI mod_wsgi.version
字典中的environ
密钥。请参阅以下内容:
您也可以使用:
import mod_wsgi
print(mod_wsgi.version)
如何让我的应用使用我的venv?
有关使用虚拟环境的文档,请访问:
正如它所述,如果您的mod_wsgi使用系统Python并且您想要使用不同的Python安装或版本,则不能强制它使用其他安装或版本。必须根据您要使用的特定Python版本编译mod_wsgi二进制文件。
因为系统mod_wsgi包通常是古老的而不是您想要使用的Python版本,所以您应该卸载系统mod_wsgi包并从源代码安装mod_wsgi来对应您要使用的Python版本。为此,最简单的安装方法是使用pip install mod_wsgi
。参见:
答案 1 :(得分:0)
继续讨论你的问题的评论部分:
假设在文件夹/venv
中创建了虚拟环境的以下目录:
- main.py
- /static
- /js
- /html
- /css
- /venv
- /bin
- activate
要激活虚拟环境,因此使用Python的本地副本(而不是全局副本),必须使用以下命令:
. /venv/bin/activate
.
实质告诉终端窗口,activate
文件位于/venv/bin
(假设我们位于上述目录的顶层),必须执行。当您在终端窗口的新行开头看到字符串(venv)
时,您就会知道该命令是成功的。
现在,which
命令将确认您现在正在使用Python的本地副本:
which python
现在您的虚拟环境已激活,您可以使用pip将本地希望的任何模块安装到此虚拟环境中。如果您愿意,您可以指定安装特定版本的模块,或者只需抓取最新版本。您安装的Flask或Apache版本取决于安装时 指定的内容。
最后,命令python --version
将告诉您此Python 2副本的版本。python3 --version
将对Python 3执行相同的操作。每当使用Python的本地副本执行脚本时,它将使用这个Python版本。
从脚本中获取Python版本:
from sys import version_info
print version_info
输出(取决于您的版本,但看起来像这样):
sys.version_info(major=2, minor=7, micro=13, releaselevel='final', serial=0)