2013-10-10 27 views
-3

我的web服務器不允許我安裝額外的Python模塊。有沒有辦法在其他地方的雲服務器上執行Python腳本(它允許插件)。因此,服務器1處理Web請求並在服務器2上調用Python,它將輸出返回給服務器1.在雲中執行Python

+0

你試過'virtualenv'嗎?你可以將任何你喜歡的東西安裝到virtualenv中...... – ldrumm

+0

virtualenv會被安裝,還是我必須安裝它? –

+0

我不知道。嘗試在shell上輸入'which virtualenv',看看它說了什麼。 – ldrumm

回答

0

這是一個簡單的python web服務器的扭曲方式。 最簡單的方法是創建一個VPS,任何雲提供商都可以做到這一點。 (例如在亞馬遜上創建一個小實例)。

從那裏,你將有一個完整的Linux發行版,你可以使用任何你想要的模塊,插件和腳本來安裝你想要的任何版本的python。

但是,一旦你設法這樣做了,爲什麼不把你的web服務器移到雲端去除必須調用輔助服務器的開銷。

2

將python模塊的內容提取到某個相關文件夾並以這種方式導入它們可能更容易。當然,你可能會失去一大堆模塊/包管理的優秀屬性,但至少你可以得到你的東西的工作..

請注意,這種方法很容易在開始時快速工作。之後,您可能希望通過使用適當的包管理工具(如ldrumm的答案中描述的工具)來獲得更強大/解耦的解決方案。

+0

就像這個想法一樣,但並不是所有的python模塊都很容易整合這種方式。有些需要額外的系統依賴性,有些則不是開源的... –

+0

是的,但是如果它在這種特殊情況下適用於模塊,那麼這是一個可行的解決方案。 –

+0

這就是爲什麼我高舉它:p –

0

我會親自嘗試在系統python上儘可能獨立,以便能夠爲我的Python應用程序執行任何操作。它允許你實現無根訪問任何地方的事情是Pythonz:https://github.com/saghul/pythonz

(也有是https://github.com/yyuu/pyenv

然後,您可以在此基礎之上,這也是建議Pythonz的作者使用virtualenv

然後,您也可以直接將Python的非Python依賴項安裝到Pythonz託管的Python前綴中,或者直接安裝到virtualenv前綴中。

1

virtualenv是您想要的軟件包,對於任何Python開發人員來說都是不可或缺的。

它至少解決了兩個問題:沒有特權

安裝包

virtualenv允許你指定的目錄,這意味着你可以安裝包而不中創建任何包你自己的本地安裝根特權。

mkdir myvirtualenv && cd myvirtualenv && virtualenv --no-site-packages . && source bin/activate 

該命令創建一個新的目錄,然後創建一個新的virtualenv。這包含bin includeliblocal所以你有一個標準的目錄爲你設置新的文件。因此而不是引用的系統封裝,它看起來在本地目錄第一

source bin/activate改變你的$PATH設置。

安裝包

許多項目的特定版本需要包的特定版本。這可能與系統上另一個項目的要求相沖突。 virtualenv救援:

source bin/activate && pip install foo==1.2.3

virtualenv幾乎總是去手牽手與pip,它允許你安裝一個包的任何版本到活動virtualenv。然後多個項目可以與不同的版本/包需求共存。

The package can be found here

編輯

一旦你已經下載的鏈接頁面的包,並提取其內容(與tar -xzf virtualenv-1.10.1.tar.gz),你可以從提取的包的根目錄下運行python virtualenv.py

+0

而且,恩,他是怎麼安裝這個軟件包的... –

+0

@PreetKukreti報仇? – ldrumm

+0

幾乎沒有。它的邏輯聲音。這表明他移動主機或創建一個VPS或獲取root帳戶是類似於響應「獲得更好的硬件」,以最優化的問題。 –