Как мне создать локальный сервер обновлений для Anaconda Python?

5570
KronoS

У меня есть набор сетевых компьютеров, которые не имеют доступа к Интернету. На каждом из этих компьютеров мне нужно установить дистрибутив Anaconda Python. В настоящее время это делается путем ручной установки на каждую машину через общую папку на сервере.

Однако это оставляет машины статически настроенными на установленную версию Anaconda и не может обновляться с помощью conda updateкоманд. Это также означает, что среды не могут быть созданы с помощью conda createкоманды.

Я хотел бы настроить централизованный сервер, на котором мы можем вручную поддерживать версии Anaconda Python (то есть python 2.7.x и python 3.x). Пользователи на других машинах будут затем указывать на этот сервер обновлений и смогут обновлять и даже создавать новые среды, просто используя команды conda updateили conda create.

Как мне это настроить?

6
Я не совсем уверен, понимаю ли я, что именно вы хотите сделать. Итак, вы хотите иметь хранилище пакетов (скажем, `yum repo`) на центральном сервере и иметь возможность обновлять этот пакет с этого сервера? Какое это имеет отношение к командам `conda update` или` conda create`? nKn 8 лет назад 0
@nKn, когда я говорю «хранилище» в этом смысле, я имею в виду централизованное хранилище установок conda и пакетов python. Это позволило бы клиентам «conda update» или «conda create», но вместо того, чтобы искать серверы континуума, он получал бы данные с локального сервера. KronoS 8 лет назад 0
Вы можете отразить repo.continuum.io (для вашей платформы), обработать его и добавить в качестве канала на локальных компьютерах. asmeurer 8 лет назад 1
Другой (платный) вариант - [Сервер Anaconda] (https://www.continuum.io/content/anaconda-subscription). asmeurer 8 лет назад 0

1 ответ на вопрос

5
Fil

Create a HTTP server and copy all the content from http://repo.continuum.io/pkgs/. Point to this new server with a .condarc file.

Choose a web server, and put the files referred to in the public repository (above) in there, with identical directory structure (but you don't need the /pkgs/free/ part). Use the respository file (eg. http://repo.continuum.io/pkgs/free/linux-64/repodata.json) to discover all the files, GET them and put onto your internal webserver.

Then, create a .condarc file with this template, supplying your internal web server like:

channels: - http://your.web.server/ 

This tells conda to get packages from your local repo, rather than the public Continuum one.

Once you've done this, running the command conda install anaconda will pull down the latest release of the Anaconda platform, from your internal repository. I have done the above, and can verify it works seamlessly. One word of caution: make sure you mirror the entire repository - don't try to optimise the packages that you include!

Похожие вопросы