Python Conda命令在命令提示符下工作,但在bash脚本中不工作
我的anaconda(4.5.4)只要通过linux终端(bashshell)使用就可以正常工作。但是,在bash脚本中运行conda命令根本不起作用 脚本test.sh包含以下行:Python Conda命令在命令提示符下工作,但在bash脚本中不工作,python,linux,bash,anaconda,conda,Python,Linux,Bash,Anaconda,Conda,我的anaconda(4.5.4)只要通过linux终端(bashshell)使用就可以正常工作。但是,在bash脚本中运行conda命令根本不起作用 脚本test.sh包含以下行: #!/bin/bash conda --version conda activate env 现在,运行bash test.sh会导致错误 test.sh:未找到第2行:conda:命令 test.sh:第3行:未找到conda:命令 根据建议,anaconda版本>4.4 my.bashrc不包含 expor
#!/bin/bash
conda --version
conda activate env
现在,运行bash test.sh
会导致错误
test.sh:未找到第2行:conda:命令
test.sh:第3行:未找到conda:命令
根据建议,anaconda版本>4.4 my.bashrc不包含
export PATH="/opt/anaconda/bin:$PATH",
但是
谢谢。do
sudo ln-s/home//miniconda3/etc/profile.d/conda.sh/etc/profile.d/conda.sh
,然后重试。这将永久激活所有用户的conda
多亏了@darthbith的评论,我才解决了这个问题 由于
conda
是一个bash函数,bash函数不能传播到独立的shell(例如,通过执行bash脚本打开),因此必须添加行
source /opt/anaconda/etc/profile.d/conda.sh
在调用conda命令之前,将其添加到bash脚本。否则bash将不知道conda的情况。如果@randomwalker的方法对您不起作用,而您的脚本在更基本的shell(如sh)中运行时就不会起作用,那么您有两个选择
eval$(conda shell.bash hook)
bash-i
调用脚本,使其在交互式环境中运行假设您尝试使用“miky”@“服务器”地址访问用户名;使用“哪条康达”学习康达路径,那么您可能会得到一条路径,如“”/home/miky/anaconda3/bin/conda”
然后将您的conda命令如下所示(在我的示例中,我使用conda安装了一个mysql插件示例):shhmiky@server-t“/home/miky/anaconda3/bin/conda安装-y-c anaconda mysql connector python”仅此而已。谢谢,但我不是正在使用的远程服务器的管理员。conda在terminal中工作得很好,但在bash脚本中却不行。通过
/opt/anaconda/etc/profile.d/conda.sh
我已经为自己激活了conda。只是conda:command not found
表明它没有激活。可能conda.sh没有做好它的工作。啊,它们之间应该没有空格/opt/。。。以及开头的点。这是相关的:。自conda 4.4以来,conda
被定义为一个bash函数,不再是一个可执行文件。您的提示引导我朝着正确的方向前进。非常感谢。这很有效!谢谢我的是在/home/ubuntu/miniconda3/etc/profile.d/conda.shonda.sh
中。有没有办法传播这个?我的bash脚本运行的其他bash脚本也希望使用conda,我是否需要在每一个脚本中都包含该调用?如github问题中所述:。默认情况下,函数不会导出以在子shell中可用。我建议您这样做:source~/anaconda3/etc/profile.d/conda.sh conda激活我的_env“…当您的脚本在更基本的shell(如sh“-baller)中运行时,它不会激活我的_env”!完美的答案,顺便说一句。效果非常好。如果你不明确地引用其结果正在传递给eval
的扩展,可能会出现细微的错误。因此,它应该更像eval“$(conda shell.bash hook)”
,这样在eval
获取其参数列表之前,任何glob表达式都不会替换为匹配的文件名。(这不是引用失败可能影响此用例的唯一副作用,但它是注释范围内最容易解释的副作用)。在bash中看不到函数、别名或shell内置,因为它是一个外部命令,而不是shell内置命令。改用输入conda
。
source /opt/anaconda/etc/profile.d/conda.sh