0

Как установить окружение conda в оффлайн-режиме?

15

Я хочу создать окружение 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 создать окружение на основе пакетов из этой директории?

5 ответ(ов)

0

Вы можете попробовать создать новую среду, клонируя базовую среду root. Для этого выполните следующую команду:

conda create -n yourenvname --clone root

Это позволит создать новую среду yourenvname, которая будет иметь такие же пакеты и настройки, что и базовая среда.

0

Краткий ответ: скопируйте всю среду с другого компьютера с такой же операционной системой.

Почему

Зависимости. Пакет зависит от других пакетов. Когда вы устанавливаете пакет через интернет, менеджер пакетов conda анализирует зависимости пакета и устанавливает все необходимые пакеты автоматически.

Зависимости особенно тяжелы в anaconda, поскольку anaconda является метапакетом, который зависит от более чем 160 других пакетов.

Метапакеты — это пакеты, которые не содержат фактического программного обеспечения и просто зависят от других установленных пакетов.

Это совершенно абсурдно загружать все эти зависимости по одному и устанавливать их на оффлайн-устройстве.

Подробное решение

  1. Установите conda на другом компьютере с той же ОС. Установите необходимые пакеты в изолированной виртуальной среде.

    # создайте среду с именем "myvenv", назовите её как хотите
    # и установите пакет в эту среду
    conda create -n myvenv --copy anaconda
    

    --copy используется для

Установка всех пакетов с использованием копий вместо жесткого или символического связывания.

  1. Найдите, где хранятся среды, с помощью команды

    conda info
    

    Первое значение ключа "envs directories" — это местоположение. Перейдите туда и упакуйте целую подпапку с именем "myvenv" (имя среды из предыдущего шага) в архив.

  2. Скопируйте архив на ваше оффлайн-устройство. Проверьте "envs directories" в conda info. Распакуйте среду из архива в каталог сред на оффлайн-устройстве.

  3. Готово.

0

Пробовали ли вы выполнить команду без опции --offline?

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

У меня эта команда работает, если я не подключён к Интернету и если Anaconda уже установлена на машине, но в другом месте. Если же вы подключены к Интернету, при выполнении этой команды вы, скорее всего, получите ошибку, связанную с тем, что что-то не удаётся найти на Binstar.

0

Директория pkgs не является каналом. Флаг, который вам нужен, это --unknown, который заставляет conda включать файлы из директории pkgs, даже если они не найдены в одном из каналов.

0

Вот что сработало для меня в Linux:

(a) Создайте пустую среду - просто создайте пустую директорию в $CONDA_HOME/envs. Проверьте с помощью команды - conda info --envs.

(b) Активируйте новую среду - выполните команду source activate <имя_среды>.

(c) Скачайте соответствующий пакет (*.bz2) с сайта https://anaconda.org/anaconda/repo на машине с подключением к интернету и переместите его на изолированный хост.

(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 <имя_среды>). Все связанные пакеты можно установить аналогичным образом.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь