JavaWeb笔记 (4) 您所在的位置:网站首页 tomcat支持php吗 JavaWeb笔记 (4)

JavaWeb笔记 (4)

#JavaWeb笔记 (4)| 来源: 网络整理| 查看: 265

Tomcat中运行Python文件 分清两个tomcat环境

在网上查了很久,大多用的是CGI。tomcat默认是关闭CGI的,要开启CGI需要在conf/web.xml文件中将被注释的几行CGI配置解除注释,

cgi org.apache.catalina.servlets.CGIServlet debug 0 cgiPathPrefix WEB-INF/cgi executable C:\ProgramData\Anaconda3\python.exe 5 cgi /cgi-bin/*

然后在conf/context.xml中在标签中加入privileged="true",也就是

xxxx

配置完毕后在eclipse中重启tomcat,访问http://localhost:8080/YOUR_PROJECT_NAME/cgi-bin/test.py,404. 但是在直接在cmd中启动tomcat,并且在tomcat的webapps/myapp/WEB-INF/cgi/中放入test.py, 访问http://localhost:8080/myapp/cgi-bin/test.py没有报404,但是consle显示python程序运行不成功 这说明在eclipse运行的tomcat和直接在tomcat根目录下运行的tomcat是不共享conf/web.xml和conf/context.xml的配置的。 eclipse运行的tomcat上只能运行eclipse内的web项目。

python运行问题

tomcat根目录下启动服务,然后又遇到了问题。访问http://localhost:8080/YOUR_PROJECT_NAME/cgi-bin/test.py步会404,但是也没有任何输出,在tomcat的consle中报错:Failed to import the site module, 也就是python程序刚初始化就失败了。查了很久资料,检查了很多遍环境变量,还是不行。第二天突然起来cgi还有一个参数没有配置。 在上面的代码中加入

passShellEnvironment true

这个参数的意思是:passShellEnvironment 是否应将 Tomcat 过程的 shell 环境变量(如果存在)传入 CGI 脚本?默认为 false 将这个参数设为true后python程序就可以正常运行了,浏览器中显示"hello,world"。

python程序中module调用问题

然后我把更复杂的一些python程序放到了cgi文件夹下,有些调用numpy包,matplotlib包,都没问题, 只是没有重写程序将的话,输出图像只会在本机(也就是服务端)显示弹窗显示,输出的数据在tomcat的consle中显示,都没有输出到网页。 这个问题不大,主要是后面我运行了一个调用tushare(一个能方便获取详细股票数据的包)的程序,tomcat报错:

AttributeError: module 'tushare' has no attribute 'get_hist_data

难道是我包没安装?但是在IDE里运行很正常。以防万一我还是pip install 了一次,还是不行。也不是什么有一个重名的tushare.py导致调用失败。 我搞不懂了,我只能推测,可能是tushare的一些函数需要使用网络接口,而在tomcat的环境下网络接口是被严格控制的,python程序未经许可去远程访问,就会报错,

莫名其妙,肯定又要改什么参数,烦!————————————— 于是我放弃了,我放弃用cgi来运行python。

我只是想用python处理下数据然后获得结果,写一个API然后用JS调用不就好了,而且,cgi这东西好像已经被淘汰了,现在没几个公司还在用这个。 但还是记录一下我在cgi的努力过程,毕竟花了我一个晚上还有今天下午一个小时≡(▔﹏▔)≡ 要懂得变通嘛,不能钻牛角尖。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有