Я запускаю команду терминала для каждого из них (я работаю в Linux), и программа запускается без проблем. Но теперь я пытаюсь запустить их из скрипта Python (я использую студию визуального кода), и это не работает, я использую os.system и подпроцесс, и это не работает, у меня есть функция для запуска сценарий bash, содержащий только команду, и он работает только в терминале, а не из сценария Python. Единственный вывод, который я получаю, это «команда x не существует», программное обеспечение было установлено в базовой среде и с использованием пути, я использую ядро Python 3.11.8.
Я работаю с пандами, pysam и другие библиотеки Python, поэтому изменение кода на bash мне не кажется привлекательным.
Я использовал os.system и подпроцесс для запуска команд, опять же, эти отлично работают в терминале или из команд bash. Я ожидаю, что команда выполнится нормально и выдаст выходной файл для получения необходимых мне данных.
Вот что мне нужно сделать:
Код: Выделить всё
def netMHC(seqs:list[str], haplotypes:list[str]):
haplotypes_str = ",".join(haplotypes)
input_path = make_input_file(seqs, "NetMHCpan")
xls_path = '../test/NetMHCpan_out.xls' # Reemplaza esto con la ruta correcta
os.system(f"netMHCpan -p {input_path} -a {haplotypes_str} -BA -inptype 1 -xls -xlsfile {xls_path}")
Код: Выделить всё
../test/net.sh: línea 3: netMHCpan: orden no encontrada.
И когда я пытаюсь использовать подпроцесс:
Код: Выделить всё
import subprocess
def net_chop(neo_ext, len_mer):
input_path = make_input_file(neo_ext, "chop")
command = f"netchop ../test/{input_path} > ../test/chop.txt"
subprocess.run(command, shell=True)
with open("../test/chop.txt", "r") as f:
for l in f.readlines():
if l.split("\t")[0] == (len_mer):
return float(l.split("\t")[3])
print("file vacio")
Код: Выделить всё
línea 1: netchop: orden no encontrada
Подробнее здесь: https://stackoverflow.com/questions/786 ... -softwares