我希望在一个特定的conda环境中安装conda程序,并能够使用来自所有conda环境的相关命令。
我的目标是允许学生在任何平台(特别是TortoiseHg)上安装Mercurial (加上很少的Mercurial扩展和相关实用程序,如Meld和TortoiseHg),只需一个简单的命令(或几个简单的命令),当然不需要编译。
当然,hg命令应该可以从任何conda环境(Windows提示符)在终端中使用。Mercurial包不能安装在基本环境中,因为Mercurial在Python2.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元包,使用一个非常简单的命令就不难做到这一点。此外,应该不难为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,您可以这样做:
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
发布于 2019-04-29 09:57:47
您可以始终创建一个shell函数/别名,并将其放入shell的运行时配置文件中。例如,对于您的用例,我会在我的~/.bashrc中添加以下内容
hg() {
(conda activate py27_mercurial
command hg "$@"
_hg_exit_code=$?
conda deactivate
exit $_hg_exit_code)
}然后,无论您在哪个环境中,始终从安装在其中的环境运行hg。要确保在新会话中为您加载此函数,可以始终查看:type -a hg的输出。
我对所有工具(有些是自定义编译的)进行一次性设置,并为每个工具设置一个别名/shell函数。这样,我就可以愉快地切换b/w环境,而不必担心太多。
发布于 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):
conda activate base
conda config --add channels conda-forge
pip install conda-app
conda-app install mercurial改进conda-app也应该不难,因为它也支持Windows。
目前,Windows用户可以通过安装TortoiseHG来安装Mercurial和重要的扩展。
https://stackoverflow.com/questions/55657360
复制相似问题