mac 使用 pyinstaller 打包 app 使 subprocess 失效的问题
- 使用pycharm开发 pyqt5 ,其中需要用到 subprocess 下载一些内容,
调用命令的方式是:
import subprocess
# 这里 cmd 是一个str array
subprocess.Popen(cmd)
我们用到的命令是 aws 。遇到的问题是,使用编译器运行的时候能够正常运行,
但使用pyinstaller 命令打包成 .app 之后,命令就不能正常执行。
添加log之后,发现返回的错误是: can not find file or filepath 'aws'
翻了好多文章之后,找到了相似的问题:
https://stackoverflow.com/questions/25917996/after-turning-into-osx-app-python-subprocess-cant-call-external-console-comman
其中有一句话说,让我们尝试一下使用全路径进行调用命令,不要用我们在mac中配置好的路径,
因为我们打包好以后,路径会发生变化。
使用 查询命令查询 aws 的路径:
which aws
把查到的全路径替换 aws
/usr/local/bin/aws --> aws
之后再打包,发现命令能够正常执行了。
仅此记录一下,其他类型的程序打包,如果遇到了调用命令行执行命令的情况,
应该也可以采取类似的策略。