【发布时间】:2017-06-02 04:25:48
【问题描述】:
我正在使用 py2app 捆绑一个使用 anaconda python 发行版的 python 脚本。
由于 py2app 不能很好地与需要用户输入的终端脚本配合使用,我有一个 py2app 的 setup.py 启动的 Tkinter 文件,然后使用 popen 进一步启动我的 .py 脚本。
在本地,这很好用:
import subprocess as sub
command = "~/anaconda/bin/python -u myscript.py " + str(groups_count)
process = sub.Popen(command, shell=True, stdout=sub.PIPE, stderr=sub.PIPE, bufsize=1, universal_newlines=True)
但是当我想分发它时,我需要替换硬编码路径并使用包含在
中的分发来运行它import subprocess as sub
command = sys.executable + " -u myscript.py " + str(groups_count)
process = sub.Popen(command, shell=True, stdout=sub.PIPE, stderr=sub.PIPE, bufsize=1, universal_newlines=True)
这会导致错误:
/bin/sh: /Users/username/projectname/appname/dist/MyOSXapp.app/Contents/MacOS/python: 权限被拒绝
如果我查看 /MyOSXapp.app/Contents/Frameworks 中的 libpython2.7.dylib,它似乎不是可执行文件,但每个人都可以阅读。这都是py2app组装的。
我需要在 pyapp 中分布的 anaconda python 上运行 popen。我该怎么做?
【问题讨论】:
标签: python macos tkinter popen py2app