OSX系统下将.py文件设为可执行文件的方法及报错解决
问题:将Python脚本设置为可执行文件并转为.app文件
我是Python新手,正尝试摆脱复制粘贴的操作(提问前已搜索并尝试所有可行方案)。试过Launcher、VSC、Jupyter,这些工具要么存在各种问题,要么绘图时会丢失工具栏。但把RGB_plot.py脚本复制粘贴到终端的Python shell中运行时,却能快速正常执行。
我希望将该脚本设置为可执行文件,以便后续转换为.app文件,通过桌面图标运行(最终目标是后台运行,先一步步来)。
尝试的操作与遇到的错误
查阅相关解答后,我在脚本开头添加了以下内容:
#!/usr/bin/env python from os import chmod chmod +x RGB_plot.py
最初只有第一行和最后一行,最后一行开头带有$符号,导致出现"\u24"错误。我添加了中间的“from os import chmod”语句,解决了Pylance提示的“chmod未定义”问题,但现在又出现“x”和“RGB_plot.py”未定义的报错(或许是因为RGB_plot.py是脚本本身的名称?)。
完整脚本内容
import seaborn as sns import pandas as pd import matplotlib.pyplot as plt sns.set_style("whitegrid", {'axes.grid' : False}) df = pd.read_excel('/Users/stanbrown/Desktop/Plot/RGB plots.xlsx') print(df.head) print(df.columns) fig = plt.figure(figsize=(6,6)) ax = plt.axes(projection='3d') ax.set_xlim(left=0) (0.0, 1.0) ax.set_ylim(0.0, 1.0) ax.set_zlim(bottom=0) (0.0, 1.0) for i in range(len(df)): ax.scatter3D(df['R'][i], df['G'][i], df['B'][i], marker=df['M'][i], c=df['C'][i], alpha=0.5) ax.set_xlabel('Red') ax.set_ylabel('Green') ax.set_zlabel('Blue') plt.show()
解决步骤
1. 移除脚本内的chmod代码
chmod +x是终端命令,不能直接写在Python脚本里执行。正确做法是打开终端,定位到脚本所在目录,执行以下命令给脚本添加可执行权限:
chmod +x RGB_plot.py
2. 修正shebang行
脚本开头的shebang行要匹配你使用的Python版本,如果用的是Python3,建议改成:
#!/usr/bin/env python3
这样系统会自动找到正确的Python3解释器,避免版本不兼容问题。
3. 修复脚本语法错误
原脚本中for循环块的代码没有缩进,这会直接导致运行报错,必须给循环内的代码添加缩进:
for i in range(len(df)): ax.scatter3D(df['R'][i], df['G'][i], df['B'][i], marker=df['M'][i], c=df['C'][i], alpha=0.5)
4. 测试可执行性
完成以上修改后,在终端中直接输入脚本路径就能运行:
/Users/stanbrown/Desktop/Plot/RGB_plot.py
5. 打包为.app文件
可以用py2app工具把脚本打包成.app文件:
- 先安装py2app:
pip install py2app - 在脚本所在目录创建
setup.py,内容如下:from setuptools import setup APP = ['RGB_plot.py'] DATA_FILES = [] OPTIONS = { 'argv_emulation': True, 'packages': ['seaborn', 'pandas', 'matplotlib'] } setup( app=APP, data_files=DATA_FILES, options={'py2app': OPTIONS}, setup_requires=['py2app'], ) - 执行打包命令:
python3 setup.py py2app
打包完成后,dist目录下会生成对应的.app文件,双击就能运行。
内容的提问来源于stack exchange,提问作者Stainless Brown
相关产品推荐
相关产品推荐

