我正在Ubuntu18.04 LTS安装上使用Python3.6.9,并尝试使用子进程库调用编译过的C++函数。 该函数不接受参数,因此我认为这应该是可行的:
subprocess.Popen(["ais"], stdout=subprocess.PIPE)
但这样做会带来回报
>>> Popen(["ais"])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.6/subprocess.py", line 729, in __init__
restore_signals, start_new_session)
File "/usr/lib/python3.6/subprocess.py", line 1364, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'ais': 'ais'
鉴于从同一目录调用os.listdir()
将返回以下结果,这对我来说有点困惑:
>>> print(os.listdir())
['COM6 ARPA_A.txt', 'dataStream.py', 'arpa.cpp', 'arpa', 'COM7 AIS.txt', 'ais.cpp', 'ais']
要执行文件,必须使用“。/filename”
从阅读上面的注释开始,您必须为文件授予可执行权限,可执行权限如下:
chmod +x ais
其原因在此有很好的解释:https://unix.stackexchange.com/a/4432/399463