[英]bundling/executing python script + modules to a remote machine
我研究了其他python模塊分發問題。 我的需求有些不同(我認為!,我是python newbie +)
我有一堆需要在遠程計算機上執行的python腳本。 目標環境如下所示:
所以我想做的是:
這可能嗎? 還是有更好的方法呢? 我想我正在尋找的是將第三方模塊“重新定位”到腳本目錄中。
提前致謝!
遠程機器彼此相同嗎? 而且,如果可以,您是否可以設置與遠程計算機實際上相同的開發計算機?
如果是這樣, virtualenv
幾乎可以做到這一點。 在開發機器上創建virtualenv
,使用pip
的virtualenv
副本在其中安裝任何第三方模塊,在其中構建腳本,然后將整個環境復制到每台遠程機器。
有三件事使它可能變得不平凡:
virtualenv
,則需要執行以下操作之一:
--relocatable
環境中通過只是工作。 請參閱“使環境可重定位”的文檔部分。 virtualenv
本身捆綁在一起,然后在每台計算機上pip install --user virtualenv
(如果他們甚至沒有pip
,請在此之前執行幾個步驟)。 這將使用戶帳戶處於永久更改狀態。 (但幸運的是,您的用戶帳戶將被刪除,所以誰在乎?) libxml2
for lxml
),則virtualenv
對此無濟於事。 實際上,您將需要C庫幾乎完全相同(相同路徑,兼容版本)。 其他三種選擇:
virtualenv
問題,例如安裝libxml2
),那么將.egg / .tgz /任何文件捆綁到第三方模塊中可能會更容易,然后編寫一個腳本,對每個腳本執行pip install --user
等操作,然后就完成了。 py2app
, py2exe
, cx_freeze
等並不那么復雜,尤其是在簡單的情況下,擁有一個cx_freeze
可執行文件進行復制比擁有一個明確的環境更加容易。 zc.buildout
是一種非常靈活且易於管理的工具,可以完成三種選擇中的任何一種。 主要缺點是學習曲線要陡得多。 您可以使用virtualenv為您的項目創建一個獨立的環境。 這可以容納您自己的腳本以及任何依賴庫。 然后,您可以使環境可重定位( --relocatable
),並將其同步到目標計算機,激活它並運行腳本。
如果這些計算機確實具有網絡訪問權限(不是Internet,而是局域網),則您也可以將virtualenv放在共享位置並從那里激活。
看起來像這樣:
virtualenv --no-site-packages portable_proj
cd portable_proj/
source bin/activate
# install some deps
pip install xyz
virtualenv --relocatable .
現在portable_proj
可以disted到其他機器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.