Я бы хотел установить программы с conda в одной конкретной среде conda и иметь возможность использовать связанные команды из всех сред conda.
Моя цель - разрешить учащимся установить Mercurial (плюс несколько Mercurialрасширения и связанные утилиты, такие как Meld и TortoiseHg) на любых платформах (особенно Windows) с помощью одной простой команды (или нескольких простых команд) и, конечно, без компиляции.
Конечно, * 1007Команда * должна быть доступна в терминале из любых сред conda (приглашение anaconda в Windows).Пакеты Mercurial не могут быть установлены в базовой среде, потому что Mercurial все еще работает лучше в Python 2.7 (в любом случае, он не будет чистым).
Теперь Mercurial и необходимые нам расширения могут быть установлены на все платформы с чем-тонапример:
conda create -n py27_mercurial -c conda-forge python=2.7 mercurial dulwich ipaddress
conda activate py27_mercurial
pip install hg-evolve hg-git
Немного поработав с conda-forge и метапакетом conda, это не составит труда сделать с помощью одной очень простой команды.Более того, не должно быть трудностей в создании пакетов conda для Meld и TortoiseHg.
На этом этапе команда hg
доступна, когда среда активирована (и очень просто установить другие расширения Mercurial),Чтобы сделать его доступным из другой среды (и в базовой среде), нужно добавить путь к каталогу, содержащему hg
, к переменной среды PATH или в Unix, чтобы создать символическую ссылку (я не знаю достаточно Windows, чтобызнаю, будет ли что-то подобное работать).Оба решения не просты, и команды не зависят от платформы.
Я не нашел команду, чтобы сделать что-то подобное в conda, но иногда эксперты по conda способны делать впечатляющие вещи!Что бы было элегантным решением этой проблемы?
Было бы также неплохо создать иконки где-нибудь (в программе запуска Anaconda?) Для графических приложений (Meld и TortoiseHg).Возможно ли это?
Редактировать: приложения Conda
Я обнаружил, что в файле meta.yaml есть способ указать, что пакет является приложением: https://docs.conda.io/projects/conda-build/en/latest/resources/define-metadata.html#app-section
Это может помочь решить проблему.
Редактировать после первого ответа на основе функции bash:
Конечно, я ищу решение, включающее очень небольшую работу (и понимание)для пользователей и с кроссплатформенными командами.
Обратите внимание, что для Linux и Bash можно просто сделать:
CONDA_APP_DIR=$HOME/.local/bin/bin-conda-app/
mkdir -p $CONDA_APP_DIR
echo -e "\nexport PATH=\$PATH:$CONDA_APP_DIR\n" >> ~/.bashrc
ln -s $(which hg) $CONDA_APP_DIR/hg
Нет необходимости активировать / деактивировать среду каждый раз hg
используется ...
Конечно, такие решения, зависящие от системы и оболочки, не являются удовлетворительными.Должна быть возможность делать такие вещи с помощью кроссплатформенных команд типа conda (см. https://github.com/conda/conda/issues/8556), что-то вроде
conda config --add channels conda-forge
conda install conda-app
conda-app install mercurial
Теперь мне просто нужно реализовать conda-app
?