子进程未在pycharm中调用multiqc

时间:2018-06-19 20:16:10

标签: subprocess pycharm

我认为这是环境问题,但是我是linux新手。

我尝试在pycharm中运行subprocess.run('multiqc。') 但它告诉我找不到文件

FileNotFoundError: [Errno 2] No such file or directory: 'multiqc .'

echo $PATH显示anaconda路径已公开

$ echo $PATH /media/SSD1T/Software/anaconda3/bin:

我尝试了subprocess.run('multiqc', shell = True),它返回错误:/bin/sh: 1: multiqc: not found

在终端中,我可以打multiqc没问题

$which multiqc /media/SSD1T/Software/anaconda3/bin/multiqc

尝试在pycharm中运行其他命令,没问题:

subprocess.run('ls')

In[11]: subprocess.run("ls")
loadSamples.py
venv
xFastqc.py
xTrim.py
Out[11]: CompletedProcess(args='ls', returncode=0)

唯一可行的方法是将整个路径添加到subprocess.run

In[12]: subprocess.run("/media/SSD1T/Software/anaconda3/bin/multiqc")
Usage: multiqc [OPTIONS] <analysis directory>

Error: Missing argument "analysis_dir".

This is MultiQC v1.5

For more help, run 'multiqc --help' or visit http://multiqc.info

Out[12]: CompletedProcess(args='/media/SSD1T/Software/anaconda3/bin/multiqc', returncode=2)

我的问题是:如何只用multiqc来调用subprocess.run,而又不把它放在整个路径上?

谢谢

2 个答案:

答案 0 :(得分:0)

因此,我通过向/ usr / bin添加链接来绕过此问题。如果您有更好的解决方案, 请让我知道。

谢谢

答案 1 :(得分:0)

这是一个古老的问题,但是为了将来的Google员工,我可以尝试提供帮助。我认为问题在于使用subprocess会打开一个新的shell,其中未激活具有MultiQC的conda环境。因此,multiqcPATH不可用,您必须指定二进制文件的完整绝对路径。

如果我是对的,那么问题不仅仅在于MultiQC,而更多的是关于在子流程调用中使用conda的问题。此主题有several other个堆栈溢出问题。快速而肮脏的方法是仅在同一subprocess调用中激活相关的conda环境:

subprocess.run('source activate base && multiqc .', shell = True)

但是,我有个好消息!从MultiQC v1.8(应在几天后发布)和请求请求#1042开始,您现在可以将MultiQC导入python脚本并作为函数运行。这更容易,更便携。您可以在此处查看示例:https://github.com/MultiQC/MultiQC_Notebook

基本脚本:

import IPython
import multiqc

multiqc.run('./path/to/data/')

IPython.display.IFrame('./multiqc_report.html', '100%', 600)