我是新来的。我已经在我的shell中安装了“seqtk”和“magicblast”,并在终端上调用“conda install”,当我直接在终端上调用它们或将它们写入bash脚本(test.sh)并在终端上运行该脚本时,它们可以正常工作。
这里是test.sh
#!/bin/bash
var1=$(sed 's/\.fastq\.gz/\.fa/' <<< $1)
seqtk seq -a $1 > $(basename $var1)
字符串
这样就行了
第一个月
但是当我尝试使用Python(test.ipynb)运行脚本时
import os
os.system("./test.sh sample_folder/sample_R1.fastq.gz")
型
it gives me“seqtk:未找到命令”
我在谷歌上搜索,并认为这是因为我在我的shell中安装了命令,但'os.system'会启动一个新的shell并在那里运行命令,这就是为什么test.ipynb显示“未找到命令”,而命令可以在终端上正常工作。
我想知道我该如何解决这个问题。
提前感谢!
我还尝试使用“source”通过os.system(“source HOME/.bash_aliases”)解决这个问题,这失败了,并显示“source:未找到”。我真的不知道如何使用这个命令。
2条答案
按热度按时间nwsw7zdq1#
我看到您将包含Python程序的文件命名为 test.ipynb。这表明您正在Jupyter笔记本或其他IDE中运行它。Mamba(类似于Anaconda)是一个虚拟环境管理器。您必须激活虚拟环境才能使用它。激活意味着更新env变量;最重要的是
PATH
,用于定位外部命令。Env变量对于每个进程都是私有的,因此当您在一个shell中激活Mamba环境时,它不会在任何其他进程中激活它。你可以做@pts在他们的回答中建议的事情,但我建议不要这样做。它是脆弱的,只是引入了另一个令人困惑的行为来源。您可以通过更改工作流来更好地从激活Mamba环境的shell启动IDE,否则可以学习从该shell运行依赖于Mamba环境的任何程序。
tf7tbtn22#
一个快速的解决方法是在Python中这样做:
字符串
但是,为了长期的可维护性,您应该激活虚拟环境。这样做将负责修改
PATH
和其他相关的环境变量。详情请看@KurtisRader的回答。