首页 文章

py2app中popen的权限问题

提问于
浏览
0

我正在使用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 回答

  • 0

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

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

    此外,还通过issue 228在py2app中添加了对此的修复 .

相关问题