gpt4 book ai didi

python - 如何解决 subprocess.run() 中的 'AttributeError: ' 模块“对象没有属性 'run'”

转载 作者:太空宇宙 更新时间:2023-11-03 21:04:39 24 4
gpt4 key购买 nike

我正在创建一个 bash 脚本,它调用一个 python 脚本,而该脚本又使用 subprocess.run() 在 bash 中运行其他进程。但是,当 bash 脚本运行其中的 python 脚本时,在调用 subprocess.run 的行中,我收到一条错误消息:

    run_metric = subprocess.run(command, shell=True, stdout = subprocess.PIPE, universal_newlines = True)
AttributeError: 'module' object has no attribute 'run'

1) 我通过使用 python=3.6 激活 conda 环境来确保使用 python 3 运行脚本,这不会给我调用 subprocess.run 带来任何问题。有趣的是,如果我将 subprocess.run() 更改为 subprocess.Popen() 脚本可以工作,但我无法弄清楚如何正确获取 run_metric.stdout

2)我正在工作的任何目录中都没有任何 subprocess.py 文件

3) print(subprocess.__file__) 的结果显示 python 不是 3.6:/usr/lib/python2.7/subprocess.pyc

另外,我尝试使用类似的东西从子进程导入运行并确保在 python 脚本和函数中我都有 import subprocess

bash脚本如下:

SWC_FOLDER_PATH=$(pwd)

sudo chmod +x /media/leandroscholz/KINGSTON/Results_article/Tracing_data/run_metrics.py

echo "run /media/leandroscholz/Tracing_data/run_metrics.py ${SWC_FOLDER_PATH} /media/leandroscholz/KINGSTON/Results_article/TREEStoolbox_tree_fixed.swc"
python /media/leandroscholz/Tracing_data/run_metrics.py ${SWC_FOLDER_PATH} /media/leandroscholz/TREEStoolbox_tree_fixed.swc

我运行的 python 脚本以这种方式调用某个使用 subprocess.run() 的函数(只是出现问题的代码的一部分):

import subprocess 
import glob

import numpy as np

def compute_metrics(swc_folder_path, gt_file_path):

# first get list of files in swc_folder_path
swc_files = (glob.glob(swc_folder_path+"/*_fixed.swc"))
n_swc_files = len(swc_files)

workflow_dict = gets_workflow_dict(swc_files)
n_images = get_n_images(swc_files)
n_workflows = len(workflow_dict)

for swc in range(0,n_swc_files):

command = "java -jar /home/leandroscholz/DiademMetric.jar -G " + swc_files[swc] +" -T " + gt_file_path
run_metric = subprocess.run(command, shell=True, stdout = subprocess.PIPE, universal_newlines = True)

我在 python 中使用 subprocess.run 因为最后我想在 bash 中运行进程后获得 run_metric.stdout 的字符串,以便稍后将其存储在数组中并将其保存到 txt 文件。

我希望我说得足够清楚并提供了足够的信息。谢谢!

最佳答案

收到评论后,我测试了print(subprocess.__file__)的输出,结果显示使用的python是python2.7,

因此,我将 python 脚本的调用从 python script.py 更改为 python3 script.py。我发现了这个问题,它也显示了从终端调用 python 程序的另一种方法。

Running Python File in Terminal

关于python - 如何解决 subprocess.run() 中的 'AttributeError: ' 模块“对象没有属性 'run'”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55498836/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com