首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Conda和conda -锻造来安装所有conda环境中可用的命令

Conda和conda -锻造来安装所有conda环境中可用的命令
EN

Stack Overflow用户
提问于 2019-04-12 18:04:30
回答 2查看 1.8K关注 0票数 4

我希望在一个特定的conda环境中安装conda程序,并能够使用来自所有conda环境的相关命令。

我的目标是允许学生在任何平台(特别是TortoiseHg)上安装Mercurial (加上很少的Mercurial扩展和相关实用程序,如Meld和TortoiseHg),只需一个简单的命令(或几个简单的命令),当然不需要编译。

当然,hg命令应该可以从任何conda环境(Windows提示符)在终端中使用。Mercurial包不能安装在基本环境中,因为Mercurial在Python2.7中仍然运行得更好(无论如何,它是不干净的)。

现在,Mercurial和我们需要的扩展可以安装在所有平台上,如下所示:

代码语言:javascript
复制
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元包,使用一个非常简单的命令就不难做到这一点。此外,应该不难为Meld和TortoiseHg创建conda包。

从这个阶段开始,当环境被激活时,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,您可以这样做:

代码语言:javascript
复制
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)来完成这样的任务,比如

代码语言:javascript
复制
conda config --add channels conda-forge
conda install conda-app
conda-app install mercurial

现在,我只需要实现conda-app

EN

回答 2

Stack Overflow用户

发布于 2019-04-29 09:57:47

您可以始终创建一个shell函数/别名,并将其放入shell的运行时配置文件中。例如,对于您的用例,我会在我的~/.bashrc中添加以下内容

代码语言:javascript
复制
hg() {
   (conda activate py27_mercurial
    command hg "$@"
    _hg_exit_code=$?
    conda deactivate
    exit $_hg_exit_code)
}

然后,无论您在哪个环境中,始终从安装在其中的环境运行hg。要确保在新会话中为您加载此函数,可以始终查看:type -a hg的输出。

我对所有工具(有些是自定义编译的)进行一次性设置,并为每个工具设置一个别名/shell函数。这样,我就可以愉快地切换b/w环境,而不必担心太多。

票数 0
EN

Stack Overflow用户

发布于 2019-05-02 14:56:45

对于使用https://stackoverflow.com/a/55900964/1779806的脚本来说,解决方案command hg ...是个错误,对于这种情况(安装命令行应用程序)效率太低。请参阅https://github.com/conda/conda/issues/8556#issuecomment-488703716

我创建了一个小型(https://pypi.org/project/conda-app/)来改善这种情况。

现在,这应该适用于Unix系统(使用Bash和Fish):

代码语言:javascript
复制
conda activate base
conda config --add channels conda-forge
pip install conda-app
conda-app install mercurial

改进conda-app也应该不难,因为它也支持Windows。

目前,Windows用户可以通过安装TortoiseHG来安装Mercurial和重要的扩展。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55657360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档