我正在使用py2app捆绑一个使用anaconda python发行版的python脚本 .
由于py2app不适合需要用户输入的终端脚本,我有一个tkinter文件,py2app的setup.py启动,然后使用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组装 .
I need to run popen on my anaconda python distributed within pyapp. How do I do this?
1 回答
我通过在osx .app文件中添加py2app保存的
python
文件的可执行权限来解决这个问题 .此外,还通过issue 228在py2app中添加了对此的修复 .