2016-05-23 77 views
3

也許你可以給我提供一些幫助。簡單地使用水蟒蟒沒有互聯網連接

嗯,我希望部署上有沒有上網的生產服務器一個Python環境。

我發現Python的蟒蛇分佈,並安裝它來試試看。 安裝目錄爲1.6GB,我可以在pkgs目錄中看到有很多庫。 然而,當我嘗試安裝環境,暢達不會在本地目錄中查找...

conda create --offline --use-local --dry-run --name pandas_etl python 
Using Anaconda Cloud api site https://api.anaconda.org 
Fetching package metadata: 
Solving package specifications: 
Error: Package missing in current linux-64 channels: 
    - python 

那麼,什麼是捆綁所有這些庫,如果需要暢達來接他們的在線儲存庫點?也許我錯過了什麼?

我要尋找一種「很多電池包括蟒蛇的」方便部署...

謝謝!

注:我使用的是Linux系統,並安裝了正規蟒蛇,不是miniconda

+0

蟒蛇的發行是完全a *電池包括*,並提供了一個非常好的環境設置。任何數量的工作來設置這是值得的!你試過[這](http://stackoverflow.com/a/31776556/2087463)? – tmthydvnprt

+0

您是否下載安裝程序?我第一次安裝時,我通過GUI或安裝嚮導*做了所有的事情。直到我需要升級一個軟件包或以其他方式管理我需要直接通過命令行運行'conda'的軟件包。 – tmthydvnprt

+0

你好,謝謝。我試過這個: – stockersky

回答

5

那麼,與熊貓玩耍,而讀法比奧Nelli書「Python數據分析」後,我意識到有多少大熊貓是一個很棒的圖書館。所以,我一直在與Anaconda合作,讓它在我的環境中工作。

1下載Anaconda安裝程序並安裝它(我猜miniconda將足夠)

2 - 通過鏡像的(部分)水蟒庫

不要讓本地通道嘗試下載工作站上的單個軟件包,將它們推送到離線服務器。事實上,依賴關係不會得到滿足。 包需要包含在通道中,並在元數據文件(repodata.json和repodata.json.bz2)中進行索引,以便正確粘貼在一起。

我用的wget鏡像蟒蛇庫的一部分:https://repo.continuum.io/pkgs/ 我用像這樣爲了不下載整個回購過濾掉的包:

wget -r --no-parent -R --regex-type pcre --reject-regex '(.*py2[67].*)|(.*py[34].*)' https://repo.continuum.io/pkgs/free/linux-64/ 

當心,不要使用類似「只有py35」包。事實上,repo中的許多軟件包名稱中都沒有版本字符串;你會錯過它們作爲依賴。

好吧,我想你可以更準確地過濾。我提取了大約6GB的軟件包!

!!!!不要從剛剛下載的存儲庫部分構建自定義頻道!(蟒蛇定製頻道) 我想這在第一次和我有這個例外:「RecursionError:最大遞歸深度,同時調用Python對象超標」。 這是一個已知的pb: https://github.com/conda/conda/issues/2371 ==>維護者討論這個問題:在repodata.json和repodata.json.bz2中維護的元數據不反映單個pkg中的元數據。他們選擇僅編輯回購元數據來解決問題,而不是每個包元數據。 所以,如果你從包中重建頻道元數據,你會錯過。

==>所以:不重建通道元數據,只是保持存儲庫元數據(repodata.json和repodata.json.bz2包含在官方anaconda存儲庫中)。 即使整個回購是不是在你的新渠道,它會工作(至少,如果你沒有過濾得多,而鏡像;-))

3-測試和使用新的渠道

conda search -c file://Path_to_your_channel/repo.continuum.io/pkgs/free/ --override-channels 

注意:不要在路徑中包含您的平臺體系結構。 舉例:您的通道樹可能是:/Path_to_your_channel/repo.continuum.io/pkgs/free/linux-64 只需省略您的拱形(在我的情況下爲linux-64)。 Conda會發現。

更新:

conda update -c file://resto/anaconda_repo/repo.continuum.io/pkgs/free/ --override-channels --all 

等等...... 我想,你可以使用你的系統用戶的暢達的conf文件中使用這種本地渠道給力。

希望它有幫助。

Guillaume