Я обновил пакеты anaconda для программы python, над которой я работал. Теперь я хочу установить эти новые пакеты на компьютеры, находящиеся в автономном режиме.
Я создал список установленных пакетов, используя следующую команду:
>conda list -e > packagelist.txt
Я хочу иметь возможность обновлять пакеты на автономных компьютерах, используя что-то вроде этого:
>conda install --file (location of 'packagelist') --channel file://(location of the folder where the packages are located)
Поэтому мой вопрос: как мне легко сделать папку "pkgs", которая содержит все файлы пакетов, указанные в моем списке пакетов?
Можно ли просто использовать всю папку "pkgs", которая находится в моем текущем месте установки Anaconda? Или пакеты в моем списке пакетов не обязательно установлены внутри?
Я прошу прощения, если вопрос "nooby", я честно не знаю, как это сделать. Ждем любой помощи.
Если кто-то еще борется с этим, это шаги, которые я сделал:
Создайте файл, содержащий имена всех пакетов, установленных в текущей среде. Один из способов сделать это (уже показано в вопросе) заключается в следующем: введите командную строку (запустите как admin):
conda list -e > packagelist.txt
Перейдите в папку "pkgs", которая находится в папке установки Anaconda. Скопируйте все zipped-пакеты там (только те, у которых есть расширение файла.tar.bz2), и вставьте их в другую папку где-нибудь, позвоните по имени "pkgs2".
Сравните пакеты в текстовом файле "packagelist", который вы создали, с пакетами внутри созданной вами новой папки "pkgs2". Удалите старые версии пакетов. Например, в вашей папке "pkgs2" могут быть две разные версии numpy. Удалите устаревший, если это необходимо.
Создавайте файлы индексов и реподатов. Я не совсем понимаю, почему. Важным является файл "repodata.json.bz2". Вы можете создать это, введя в командной строке следующее (очевидно, ваш "pkgs2" может быть расположен где-то в другом месте, поэтому настройте соответственно):
conda index C:\Users\myName\Desktop\pkgs2
Если вы получите следующую ошибку:
Indexing a copy of the Anaconda conda package channel is neither necessary nor supported. If you which to add your own packages, you can do so by adding them to a separate channel.
то вам нужно перейти в папку "pkgs2" и удалить пакет "_license". Я не знаю, почему он работает, но он делает (видел решение ошибки из поиска Google).
Вы должны увидеть, что после завершения индексирования в папку "pkgs2" было добавлено 3 новых файла. Их называют ".index.json", "repodata.json" и "repodata.json.bz2".
Теперь вы можете перенести папку "pkgs2" и "packagelist.txt" на другой компьютер. Вы также можете включить установочный файл для установки anaconda, если компьютер еще не установлен. Чтобы установить новые/обновленные пакеты в автономном режиме, введите в командной строке на автономном компьютере, на котором установлена anaconda, следующее: еще раз, не забудьте изменить имена файлов и местоположения соответственно:
conda install --file C:\Users\myName\Desktop\OfflineInstall\packagelist.txt --channel file://C:\Users\myName\Desktop\OfflineInstall\pkgs2
Если все пойдет хорошо, вы должны увидеть что-то вроде этого в командной строке: . И как только новые пакеты будут установлены, все готово!
Тем не менее, вы можете столкнуться со следующей проблемой на этапе 5 (это всего лишь пример):
UnsatisfiableError: The following specifications were found to be in conflict:
- matplotlib 1.4.3 np19py27_1 -> pyparsing 2.0.3
- pyparsing 2.2.0 py27_0
Use "conda info <package>" to see the dependencies for each package.
Корректируйте свои пакеты соответственно, удаляя конфликтующие, которые вам не нужны, или обновляйте их. Повторите шаг 4, и вы должны быть в порядке.
Надеюсь, это поможет кому-то!