我有一个python脚本,它等待用户输入,然后打印输入的字符串。假设这个脚本叫做"run.py“。
脚本run.py导入了我编写的其他一些python脚本,文件夹结构是:
+ py_app
- run.py
+ util
- __init__.py
- a.py
- b.py
- c.py现在,我希望我可以将这个小应用程序包装在一个.app文件中,以便其他mac用户只需双击即可运行脚本。
我使用py2applet来完成这项工作:
py2applet --make-setup run.py setup.py:
从setuptools导入设置
APP = ['run.py']
DATA_FILES = []
OPTIONS = {}
setup(
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app'],
packages=['util']然后
python setup.py py2app -A
running py2app
running build_py
creating build
creating build/bdist.macosx-10.11-intel
creating build/bdist.macosx-10.11-intel/lib
creating build/bdist.macosx-10.11-intel/lib/leancloud_util
copying util/__init__.py -> build/bdist.macosx-10.11-intel/lib/util
copying util/a.py -> build/bdist.macosx-10.11-intel/lib/util
copying util/b.py -> build/bdist.macosx-10.11-intel/lib/util
copying util/c.py -> build/bdist.macosx-10.11-intel/lib/util
creating path/to/app/build/bdist.macosx-10.11-intel/python2.7-semi_standalone
creating path/to/app/build/bdist.macosx-10.11-intel/python2.7-semi_standalone/app
creating path/to/app/build/bdist.macosx-10.11-intel/python2.7-semi_standalone/app/collect
creating path/to/app/build/bdist.macosx-10.11-intel/python2.7-semi_standalone/app/temp
creating path/to/app/dist
creating build/bdist.macosx-10.11-intel/python2.7-semi_standalone/app/lib-dynload
creating build/bdist.macosx-10.11-intel/python2.7-semi_standalone/app/Frameworks
*** creating application bundle: run ***
Done!一切似乎都很正常,但当我点击生成的应用程序时,终端没有显示出来......
我更改了我的run.py,让它变得非常简单:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from util.a import a
from util.b import b
from util.c import c
if __name__ == "__main__":
print '111111 ...'但是,当我单击应用程序时,仍然没有任何反应,当然,当我在终端中调用它时,脚本运行得很好:
python run.py我不确定问题出在哪里。任何建议都将不胜感激,谢谢:)
发布于 2017-06-27 16:46:33
如果您的脚本包含系统调用,请注意,一旦打包,应用程序将丢失系统路径,因此在路径中将无法再找到脚本。
我的建议是在程序的最开始添加以下代码:
os.environ["PATH"] += "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"https://stackoverflow.com/questions/41479547
复制相似问题