解决pyinstaller打包的程序无法执行,提示Operation not permitted

在使用PyInstaller打包Python脚本后,运行时遇到'Operation not permitted'错误,原因是打包后的可执行文件在运行时需要在/tmp目录下创建临时文件夹,但该目录被设置为noexec。解决方案包括修改/tmp的mount选项或使用--runtime-tmpdir指定临时目录。
摘要由CSDN通过智能技术生成

前言

PyInstaller是一个强大的工具,它可以分析我们的python脚本,发现脚本执行所依赖的模块,并将他们打包到一个文件夹,或者封装成一个可执行文件(exe或者binary)。然后,我们就可以将这个文件(文件夹)放到其他机器上去执行,目标机器甚至可以不用安装python环境!这跟docker有异曲同工之妙。

问题描述

Centos7上,用PyInstallerpy文件打成一个binary,把该可执行文件放到其他的Centos7上去执行,结果报如下的错误:

error while loading shared libraries: libz.so.1: failed to map segment from shared object: Operation not permitted

问题定位

一般Operation not permitted都是权限不足导致的,但是看了一下文件,是有执行(x)的权限的。
把这个文件放到其他的机器上去执行,发现有的机器可以跑,有的机器不能跑!所以肯定是机器配置上的差异。

回到PyInstaller官网,看到如下介绍:

The bootloader is the heart of the one-file bundl

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值