簡體   English   中英

離線時如何安裝 conda 環境?

[英]How can I install a conda environment when offline?

我想在沒有網絡連接的機器上創建一個 conda 環境。 到目前為止我所做的是:

在連接到互聯網的機器上:

conda create -n python3 python=3.4 anaconda

Conda 將所有相關包歸檔到\\Anaconda\\pkgs 我把它們放在一個單獨的文件夾中,然后將它移到沒有網絡連接的機器上。 該文件夾的路徑為PATHTO\\Anaconda_py3\\win-64

我試過

conda create -n python=3.4 anaconda --offline --channel PATHTO\Anaconda_py3

這給出了錯誤消息

Fetching package metadata:
Error: No packages found in current win-64 channels matching: anaconda

You can search for this package on Binstar with

    binstar search -t conda anaconda

我究竟做錯了什么? 如何告訴 conda 基於此目錄中的包創建環境?

您可以嘗試克隆作為基礎環境的 root。

conda create -n yourenvname --clone root

簡短回答:具有相同操作系統的另一台機器復制整個環境

為什么

依賴性 一個包依賴於其他包。 當您在線安裝軟件包時,軟件包管理器conda分析軟件包依賴關系並為您安裝所有必需的軟件包。

anaconda的依賴性尤其嚴重。 因為anaconda是一個元包,依賴於另外 160 多個包。

元包,是不包含實際軟件的包,僅依賴於要安裝的其他包。

把這些依賴一一下載,安裝在離線機器上,簡直是荒唐。

詳細解決方案

  1. 在具有相同操作系統的另一台機器上安裝conda 在隔離的虛擬環境中安裝您需要的軟件包。

     # create a env named "myvenv", name it whatever you want # and install the package into this env conda create -n myvenv --copy anaconda

    --copy用於

    使用副本而不是硬鏈接或軟鏈接安裝所有軟件包。

  2. 查找環境的存儲位置

    conda info

    鍵“envs目錄”的第一個值是位置。 去那里並將名為“myvenv”(上一步中的 env 名稱)的整個子文件夾打包到一個存檔中。

  3. 將存檔復制到您的離線機器。 conda info檢查“envs目錄”。 並將環境從存檔中解壓到離線機器上的 env 目錄中。

  4. 完畢。

除了復制pkgs文件夾之外,還需要對其進行索引,以便conda知道如何查找依賴項。 有關更多詳細信息,請參閱此票證,有關索引pkgs文件夾的示例,請參閱腳本

使用--unknown作為 @asmeurer 建議僅當您嘗試安裝的軟件包沒有依賴項時才有效,否則您將收到“找不到某些依賴項”錯誤。

克隆是另一種選擇,但這會給你所有的根包,這可能不是你想要的。

你試過沒有 --offline 嗎?

conda create -n anaconda python=3.4 --channel PATHTO\Anaconda_py3

如果我沒有連接到互聯網,如果我的機器上已經有 anaconda 但在另一個位置,這對我有用。 如果您在運行此命令時連接到 Internet,您可能會收到與在 Binstar 上找不到內容相關的錯誤。

這里的很多答案都不是 100% 與“離線時”部分相關的。 他們談論 OP 的其余問題,而不是反映在問題標題中。

如果您來到這里是因為您需要在現有 Anaconda 安裝之上創建離線 env,您可以嘗試:

conda create --offline --name $NAME

您可以在此處找到記錄的--offline標志

我不確定這是否與其他答案相矛盾或相同,但我按照conda 文檔中的說明在本地文件系統上設置了一個通道。

然后將新的包文件移動到本地目錄,在通道子文件夾(應該有一個類似linux-64的名稱)上運行conda index是一件簡單的事情。

我還按照此處所述將 Anaconda 配置offline設置為True ,但不確定這是否必要。

希望有幫助。

pkgs 目錄不是頻道。 您要查找的標志是--unknown ,這會導致--unknown將文件包含在pkgs目錄中,即使在其中一個頻道中找不到這些文件。

這是在 Linux 中對我有用的東西 -

(a) 創建一個空白環境 - 只需在 $CONDA_HOME/envs 下創建一個空目錄。 使用 - conda info --envs 進行驗證。

(b) 激活新的 env - source activate

(c) 在具有 Internet 連接的機器上從https://anaconda.org/anaconda/repo下載適當的包 (*.bz2) 並將其移動到隔離主機。

(d) 使用本地包安裝 - conda install 。 例如 - conda install python-3.6.4-hc3d631a_1.tar.bz2,其中 python-3.6.4-hc3d631a_1.tar.bz2 存在於當前目錄中。

就是這樣。 您可以通過通常的方式(python -V, conda list -n )進行驗證。 所有相關的軟件包都可以以相同的方式安裝。

我發現最簡單的方法如下:

  1. 運行“conda create --name name package ”,沒有特殊開關
  2. 復制它嘗試(不成功)下載的第一個包的 URL
  3. 使用連接機器上的 URL 來獲取 tar.bz2
  4. 將tar.bz2復制到離線機器的/home/用戶/anaconda3/pkgs
  5. 就地部署 tar.bz2
  6. 刪除現在不需要的 tar.bz2
  7. 重復直到“conda create”命令成功

這是一個可能有幫助的解決方案。 它不是很漂亮,但它完成了工作。 所以我想你有一台機器,你有一個 conda 環境,你已經安裝了你需要的所有包。 我將其稱為ENV1。您必須轉到此環境目錄並找到它。 它通常位於\\Anaconda3\\envs 我建議壓縮文件夾,但您可以按原樣使用它。 將所需的環境文件夾復制到 anaconda 環境的離線機器目錄中。 第一步應該讓您的新環境響應conda activate類的命令。

您會注意到,盡管 spyder 和 jupyter 之類的軟件不再起作用(可能是因為路徑差異)。 我對此的解決方案是將離線機器中的基本環境克隆到我將稱為ENV2的新環境中。 然后您需要做的是將ENV2的內容復制到ENV1的內容中並替換文件。

這應該覆蓋與 spyder、jupyter.. 相關的文件,並保持導入的包完好無損。

我有一個類似的問題要解決。 我能夠通過從 anaconda 網站下載的二進制文件在網絡隔離系統上安裝 miniconda。 我需要使用 miniconda 的基本 python 版本在這個系統上創建虛擬環境。

Arthur Alvin 在這個帖子中的帖子解決了我的問題

> conda create -n yourenvname --clone root

$ bash Anaconda2-4.1.1-Linux-x86_64.sh -b -p $HOME/anaconda
$ bash Anaconda3-4.1.1-Linux-x86_64.sh -b -p $HOME/anaconda/envs/py3k
$ rm -f $HOME/anaconda/envs/py3k/bin/conda*
$ rm -f $HOME/anaconda/envs/py3k/conda-meta/conda-*
$ cd $HOME/anaconda/envs/py3k/bin
$ ln -s ../../../bin/conda .
$ rm -f activate
$ rm -f deactivate
$ ln -s ../../../bin/activate .
$ ln -s ../../../bin/deactivate .

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM