如果在 Windows 上导入 python 包,Apache 将无法工作
Apache doesn't work if importing python packages on Windows
我在 Windows 上使用 mod_wsgi、python 3.7 设置了一个 apache 服务器。
我使用 anaconda 发行版。
如果我call mod_wsgi-express module-config
我明白了:
LoadFile "c:/programdata/anaconda3/envs/processing/python37.dll"
LoadModule wsgi_module "c:/programdata/anaconda3/envs/processing/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "c:/programdata/anaconda3/envs/processing/"
所以我确实把它放在了 httpd.conf 中。然后在 httpd-vhosts.conf 我有这个:<VirtualHost *:80>
ServerName localhost
WSGIScriptAlias / C:\Source\PreProcessAPI\web.wsgi
DocumentRoot "C:\Source\PreProcessAPI"
<Directory "C:\Source\PreProcessAPI">
Require all granted
</Directory>
</VirtualHost>
我的 web.wsgi 看起来像这样:
import sys
sys.path.append("C:/Source/PreProcessAPI/")
from t import app as application
我的 Flask 应用程序如下所示:
from flask import Flask,request
#%%init
app = Flask(__name__)
#%%Root Get
@app.route('/',methods=['GET'])
def hello():
return "hello"
#%%Main
if __name__ == '__main__':
app.run(host='0.0.0.0',port=5000)
而且它是这样工作的,很好。但如果我导入其他任何东西,即导入 pandas。
然后整个服务器看起来就像闲置一样。它只是不断加载页面,并没有将任何内容放入日志文件。
如果我在激活处理环境后只是 运行 我的烧瓶应用程序,那么它也可以与包一起使用。
据我所知,windows 的文档很少。希望有人能帮忙。
更新:
如果我将 mod_wsgi 安装到基础环境中,并将 运行 与包含在 httpd.conf 中的模块一起安装,那么我会收到导入错误,但是来自模块内部。即它开始导入 numpy 并且它有一些随机子模块的导入错误。
好的,看来我只是添加
WSGIApplicationGroup %{GLOBAL}
它会起作用,因为它会强制应用程序使用给定的解释器。
我以为这个设置只适用于 linux.. 但幸运的是它也适用于 windows!
我在 Windows 上使用 mod_wsgi、python 3.7 设置了一个 apache 服务器。 我使用 anaconda 发行版。
如果我call mod_wsgi-express module-config
我明白了:
LoadFile "c:/programdata/anaconda3/envs/processing/python37.dll"
LoadModule wsgi_module "c:/programdata/anaconda3/envs/processing/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "c:/programdata/anaconda3/envs/processing/"
所以我确实把它放在了 httpd.conf 中。然后在 httpd-vhosts.conf 我有这个:<VirtualHost *:80>
ServerName localhost
WSGIScriptAlias / C:\Source\PreProcessAPI\web.wsgi
DocumentRoot "C:\Source\PreProcessAPI"
<Directory "C:\Source\PreProcessAPI">
Require all granted
</Directory>
</VirtualHost>
我的 web.wsgi 看起来像这样:
import sys
sys.path.append("C:/Source/PreProcessAPI/")
from t import app as application
我的 Flask 应用程序如下所示:
from flask import Flask,request
#%%init
app = Flask(__name__)
#%%Root Get
@app.route('/',methods=['GET'])
def hello():
return "hello"
#%%Main
if __name__ == '__main__':
app.run(host='0.0.0.0',port=5000)
而且它是这样工作的,很好。但如果我导入其他任何东西,即导入 pandas。 然后整个服务器看起来就像闲置一样。它只是不断加载页面,并没有将任何内容放入日志文件。 如果我在激活处理环境后只是 运行 我的烧瓶应用程序,那么它也可以与包一起使用。
据我所知,windows 的文档很少。希望有人能帮忙。
更新: 如果我将 mod_wsgi 安装到基础环境中,并将 运行 与包含在 httpd.conf 中的模块一起安装,那么我会收到导入错误,但是来自模块内部。即它开始导入 numpy 并且它有一些随机子模块的导入错误。
好的,看来我只是添加
WSGIApplicationGroup %{GLOBAL}
它会起作用,因为它会强制应用程序使用给定的解释器。 我以为这个设置只适用于 linux.. 但幸运的是它也适用于 windows!