Python subprocess() 运行时错误:PosixPath 的 Exec 格式错误

问题描述 投票:0回答:1

我遇到了 Python 子进程模块的问题。即,使用 subprocess.run() 方法调用另一个 Python 脚本。问题似乎出在 Popen 构造函数中。我收到的错误是这样的:“OSError:[Errno 8] Exec 格式错误:PosixPath。”解释器似乎无法识别文件路径,或者我提供的参数不正确。任何帮助将非常感激。我做了一些挖掘,但无法查明问题或如何解决它!

我的代码(错误在最后一行):


#!/usr/bin/env python

import tkinter as tk
from tkinter import ttk, messagebox
import subprocess
from pathlib import Path

def input_window(process_select):
    input_window = tk.Toplevel(root)
    input_window.title("Input")
    input_window.geometry(f"+{int(x)}+{int(y)}")
        
    input_label = tk.Label(input_window,text = "Enter trial name")
    input_label.pack(pady = 10)
        
    input_var = tk.StringVar()
    input_entry = tk.Entry(input_window,textvariable = input_var)
    input_entry.pack(pady = 10)

    def execute_code(process_select):
        trial_name = input_vgar.get()
        input_window.destroy()
        if process_select == 1:
            file_path = Path(__file__).with_name("MyFile.py")
            subprocess.run(file_path,text = True,input = trial_name)

这是包含相关信息的回溯:


File "/home/username/Desktop/.../CallingFile.py", line 28, in execute_code
    subprocess.run(file_path,text = True,input = trial_name)
File "/usr/lib/python3.10/subprocess.py", line 503, in run
    with Popen(*popenargs, **kwargs) as process:
File "/usr/lib/python3.10/subprocess.py", line 971, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/lib/python3.10/subprocess.py", line 1863, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
OSError: [Errno 8] Exec format error: PosixPath('/home/username/Desktop/.../MyFile.py')

我尝试了不同的解决方法,例如切换参数的顺序或使用列表(顺序化),以及使用 Python 的路径调用文件。对于前两个解决方法,我只是收到不同的错误消息。最后的解决方法导致我出现此错误。

python python-3.x subprocess popen
1个回答
0
投票

这看起来像是 MyFile.py 的问题,而不是您包含的代码的问题。

MyFile.py 的权限是什么?它可以执行吗?您可以通过以下方式修复权限:

chmod +x MyFile.py

MyFile.py 是否以

#!/usr/bin/env python
或类似的
#!
python
结构开头?

你可以从 shell 运行 MyFile.py 吗?

./MyFile.py
© www.soinside.com 2019 - 2024. All rights reserved.