簡體   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