繁体   English   中英

更改我的Apache本地服务器使用的python安装

[英]Change which python installation my apache local server is using

我有两个python安装程序,一个在/ usr / bin / env上,一个通过在/ Library / Enthought / User / bin / python中的Enthought安装。 经过深思熟虑的安装有一个库,我想在我从前同事那里继承的网站中使用该库。

我通过Mac OSX 10.10.5(Yosemite)上的apache设置了本地服务器。 我在网站文件夹中配置了httpd.conf和用户配置文件以执行cgi和py文件。

但是,当我尝试通过服务器运行同事的python脚本时,似乎使用的安装没有我需要的软件包(/ usr / bin / env)。 我尝试将脚本顶部的shebang更改为:

'#!/ usr / bin / env python'到'#!/ Library / Enthought / User / bin / python'

但这给了我一个内部服务错误(500)。

我能够做的一件事是使用以下命令创建符号链接:'sudo ln -s / Library / Enthought / User / bin / python / usr / bin / python'

现在,他的脚本可以运行,并且可以轻松找到合适的python软件包。 但是,我想了解为什么更改shebang还是不够的。 为什么服务器仍然访问/ usr / bin / env python发行版?

一个子问题:最后,在此期间,我创建了自己的测试脚本,但是无论shebang是什么,我都会收到内部服务错误(500)。 该脚本与他的脚本位于同一文件夹中。 为什么该脚本无法运行?:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import cgi
import cgitb; cgitb.enable()  # for troubleshooting
print "Content-type: text/html"
print
print "<html><head>"
print ""
print "</head><body>"
print "Hello."
print "</body></html>"

谢谢! 我希望这个问题是明确的。 这是我第一次使用Web服务器,因此,如果我在使用术语时出错,请更正我!

您引用的shebang生活由于末尾的空间而无法使用。 /usr/bin/env是一个程序,而python是参数,它是要查找的程序的名称。 从新的shebang中删除空间,您将直接运行Python解释器。 无需为其提供参数。

至于其他脚本为什么不起作用的原因,我只能猜测您没有使其可执行,因为我找不到其他任何导致其失败的原因(但这只是一个猜测)。

您的第二个打印语句没有参数。 尝试将其从print更改为print "\\n"

编辑

请尝试以下脚本,并在其前面加上适当的shebang行,并按照holdenweb的说明,确保该脚本具有正确用户的执行权限。 我过去遇到的另一个问题是线路终端。 如果您具有“ od”实用程序,请在命令行上运行“ od -c <filename> ”以对新文件和现有的工作文件进行八进制转储。 这样,您可以查看文件是否以相同的行终止(“ \\ r \\ n”或“ \\ n”)结尾。

import cgi
print "HTTP/1.0 Status: 200 OK"
print "Content-type: text/html"
print ""
print "<html><head>"
print "</head><body>"
print "Hello."
print "</body></html>"

注意添加了print "HTTP/1.0 Status: 200 OK" 除此之外...我没有建议。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM