Pyproject.toml配置的Python脚本在macOS无执行权限求助
问题解决:pyproject.toml构建的脚本在Mac OS无执行权限
原因分析
旧的setup.py配置中,setuptools会主动为安装后的脚本添加可执行权限,无论源码文件本身是否携带+x权限位。但切换到pyproject.toml的标准化配置后,setuptools会严格遵循源码文件的原始权限属性——如果你的脚本在仓库中没有设置可执行权限,安装到Mac OS后自然会是-rw-r--r--。你尝试的三种配置方式本质都依赖setuptools的同一权限处理逻辑,所以结果一致。
解决方案
方案1:给源码脚本添加可执行权限(推荐)
在本地仓库中给目标脚本添加可执行权限,提交到版本库后,后续所有安装都会自动继承该权限:
chmod +x path/to/your_script.py
只需在源码仓库中操作一次,所有工作站安装时都会得到带-rwxr-xr-x权限的脚本,无需逐个修改。
方案2:使用entry-points生成wrapper脚本
如果不想修改源码文件权限,可以用project.scripts的entry-points形式配置,setuptools会自动生成一个带可执行权限的wrapper脚本,指向你脚本的入口函数:
[project.scripts] your_script_name = "your_package.module_name:main"
其中:
your_script_name是终端中要执行的命令名your_package.module_name是脚本对应的Python模块路径(比如脚本放在your_package/script.py,就写your_package.script)main是脚本的入口函数(需要你在脚本中把执行逻辑封装到main()函数,然后添加if __name__ == "__main__": main())
内容的提问来源于stack exchange,提问作者Will
相关产品推荐
相关产品推荐

