2017-06-02 31 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此修復。