Ответ 1
Вы можете попробовать клонировать корень, который является базовым env.
conda create -n yourenvname --clone root
Я хотел бы создать среду conda на машине, у которой нет сетевого подключения. Что я сделал до сих пор:
На компьютере, подключенном к Интернету:
conda create -n python3 python=3.4 anaconda
Конда архивировала все соответствующие пакеты в \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 о создании среды на основе пакетов в этом каталоге?
Вы можете попробовать клонировать корень, который является базовым env.
conda create -n yourenvname --clone root
В дополнение к копированию папки pkgs
вам необходимо проиндексировать ее, чтобы conda
знал, как найти зависимости. Подробнее см. этот билет и этот script для пример индексации папки pkgs
.
Использование --unknown
в качестве предложения @asmeurer будет работать только в том случае, если пакет, который вы пытаетесь установить, не имеет зависимостей, иначе вы получите ошибку "Не удалось найти некоторые зависимости".
Клонирование - это еще один вариант, но это даст вам все корневые пакеты, которые могут быть не такими, какие вы хотите.
Вы пробовали без --offline?
conda create -n anaconda python=3.4 --channel PATHTO\Anaconda_py3
Это работает для меня, если я не подключен к Интернету, если у меня есть anaconda уже на машине, но в другом месте. Если при выполнении этой команды вы подключены к Интернету, вы, вероятно, получите ошибку, связанную с тем, что что-то не найдено в Binstar.
Я не уверен, противоречит ли это другим ответам или является тем же, но я следовал инструкциям в документации conda и настроил канал в локальной файловой системе.
Тогда нужно просто переместить новые файлы пакета в локальный каталог, запустив conda index
канала (имя которой должно быть похоже на linux-64
).
Я также установил параметр конфигурации Anaconda в offline
на True
как описано здесь, но не уверен, что это было важно.
Надеюсь, это поможет.
Каталог pkgs не является каналом. Флаг, который вы ищете, это --unknown
, что приводит к тому, что conda включает файлы в каталог pkgs
, даже если они не найдены в одном из каналов.
Вот что у меня работало в Linux -
(a) Создайте пустое окружение - просто создайте пустой каталог в $ CONDA_HOME/envs. Проверьте с помощью - conda info --envs.
(б) Активировать новый env - источник активировать
(c) Загрузите соответствующий пакет (*.bz2) с https://anaconda.org/anaconda/repo на компьютере с подключением к Интернету и переместите его на изолированный хост.
(d) Установите с использованием локального пакета - conda install. Например: conda установить python-3.6.4-hc3d631a_1.tar.bz2, где python-3.6.4-hc3d631a_1.tar.bz2 существует в текущем каталоге.
Это. Вы можете проверить обычными средствами (python -V, список conda -n). Все связанные пакеты могут быть установлены одинаково.
Краткий ответ: скопируйте всю среду с другого компьютера с той же ОС.
Зависимость от. Пакет зависит от других пакетов. Когда вы устанавливаете пакет онлайн, менеджер пакетов conda
анализирует зависимости пакетов и устанавливает все необходимые вам пакеты.
Зависимость особенно сильна в anaconda
. Причина anaconda
является метапакетом, зависит от других 160+ пакетов.
Мета-пакеты - это пакеты, которые не содержат реального программного обеспечения и просто зависят от устанавливаемых других пакетов.
Абсолютно абсурдно загружать все эти зависимости одну за другой и устанавливать их на автономный компьютер.
Установите 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
используется для
Установите все пакеты, используя копии вместо hard- или мягкое сшивание.
Найдите, где хранятся среды, с помощью
conda info
Первым значением ключа "envs directoryies" является местоположение. Перейдите туда и упакуйте всю подпапку с именем "myvenv" (имя env на предыдущем шаге) в архив.
Скопируйте архив на автономный компьютер. Проверьте "каталоги envs" из conda info
. И извлеките среду из архива в каталог env на автономном компьютере.
Готово.
Я нашел самый простой способ:
$ 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 .