py2app 中 popen 的权限问题
Permission issues with popen within py2app
我正在使用 py2app 捆绑一个 python 脚本,该脚本使用 anaconda 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: Permission denied
如果我查看 /MyOSXapp.app/Contents/Frameworks 中的 libpython2.7.dylib,它似乎不可执行,但每个人都可读。这都是py2app组装的。
我需要在我的 anaconda python 上 运行 popen
在 pyapp 中分发。我该怎么做?
我通过在 osx.app 文件中为 py2app 保存的 python
文件添加可执行权限来解决这个问题。
$ chmod +x ./dist/MyOSXapp.app/Contents/MacOS/python
此外,还通过 issue 228 在 py2app 中添加了对此的修复。
我正在使用 py2app 捆绑一个 python 脚本,该脚本使用 anaconda 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: Permission denied
如果我查看 /MyOSXapp.app/Contents/Frameworks 中的 libpython2.7.dylib,它似乎不可执行,但每个人都可读。这都是py2app组装的。
我需要在我的 anaconda python 上 运行 popen
在 pyapp 中分发。我该怎么做?
我通过在 osx.app 文件中为 py2app 保存的 python
文件添加可执行权限来解决这个问题。
$ chmod +x ./dist/MyOSXapp.app/Contents/MacOS/python
此外,还通过 issue 228 在 py2app 中添加了对此的修复。