2017-06-02 30 views
0

我正在使用py2app捆绑一个python脚本,它使用anaconda python分发。py2app中的popen权限问题

由于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: Permission denied

如果我看看/MyOSXapp.app/Contents中的libpython2.7.dylib /框架它似乎不可执行,但是每个人都可以阅读。这一切都是由py2app组装的。

我需要运行popen我的anaconda python分布在pyapp内。我该怎么做呢?

回答

0

我在osx .app文件中通过向py2app保存的python文件添加可执行权限来解决此问题。

$ chmod +x ./dist/MyOSXapp.app/Contents/MacOS/python 

此外,经由issue 228还加入在py2app此修复。