【发布时间】:2021-05-19 09:24:08
【问题描述】:
我的本地机器上有一个 Windows 可执行文件 (net_audio_client.exe)。当我在我的 pycharm IDE 上运行以下 python 代码时,它工作正常。
def hello_world(request):
request_json = request.get_json()
if request.args and 'message' in request.args:
return request.args.get('message')
elif request_json and 'message' in request_json:
return request_json['message']
else:
print(subprocess.Popen("net_audio_client -user xxx -pass xxx -mac macaddr", shell=True,
stdout=subprocess.PIPE).stdout.read())
return f'Hello World!'
当我将其压缩并上传到谷歌云功能时,相同的代码不起作用。我收到以下错误:
/bin/sh: 1: net_audio_client: not found
我遵循的堆栈问题:
- How to load local assets within a GCP cloud function?
- How to run a subprocess inside Google Cloud Function?
谢谢
【问题讨论】:
-
错误显示
/bin/sh,这意味着它使用的是Linux,而不是Windows,所以.exe可能不起作用。顺便说一句:它搜索net_audio_client而不搜索.exe,Linux 将net_audio_client和net_audio_client.exe视为两个不同的程序。 -
我想知道
net_audio_client在做什么以及-mac macaddr可能意味着什么 - 如果它是 MAC 地址,那么它可能只在本地网络中有效。在服务器上,它可能使用云网络中的 MAC 地址,而不是您的本地网络。 -
我有一个适用于 Linux 和 Windows 的可执行文件。我已经将它们都压缩并上传了。我也尝试过上传单个可执行文件。 mac是mac地址。这是一个远程硬编码的 MAC 地址。如果我在任何带有 exe 文件的 Windows 笔记本电脑中运行相同的程序,这将有效。但同样不适用于云功能。
-
您是否尝试在代码
/full/path/to/net_audio_client中使用?系统可能不知道这里是net_audio_client。如果它与代码在同一个文件夹中,那么您可以尝试dot从当前文件夹运行程序 -./net_audio_client。 -
@furas 我删除了 .exe 文件,只保留了 Linux 可执行文件。与
./net_audio_client合作。谢谢。我删除了
标签: python google-cloud-platform google-cloud-functions