【python】pyinstaller编译后py脚本中的shell命令报错symbol lookup error

问题描述

  1. 有一个python脚本testa.py,脚本内部使用了shell命令,比如:
# testa.py
import subprocess
subprocess.call("mkdir -p test123", shell=True)
  1. 直接使用pyinstaller进行编译
pyinstaller testa.py

编译后生成的文件:./dist/testa

  1. testa放入镜像中,在镜像中执行testa脚本,出现报错注意信息
mkdir: symbol lookup error: mkdir: undefined symbol: mode_to_security_class

很明显,不可能是mkdir命令本身的问题。从网搜的很多说明中,推测大概率与配置的环境有关。
在使用pyinstaller前,先配置好环境,再进行pyinstaller编译,则不再报错。

解决办法

  1. 使用的配置文件mypath.txt:
unset PYTHONPATH PYTHONHOME
export PATH=/mysoftware/python2/envs/pyinstaller/bin/:$PATH
#export LD_LIBRARY_PATH=/mydir/src/proj7-mysql:$LD_LIBRARY_PATH
#export LD_LIBRARY_PATH=/mysoftware/python2/envs/pyinstaller/lib/python2.7/site-packages/libc/glibc-2.14/build/:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/mysoftware/python2/envs/pyinstaller/lib/python2.7/site-packages/mysql/:$LD_LIBRARY_PATH
  1. 然后使用source命令配置环境
source mypath.txt
  1. 重新进行pyinstaller编译
pyinstaller testa.py

编译后,重新将./dist/testa脚本加入镜像,再进行测试,没有问题。

总结

出现该文件主要是本地编译的环境,和使用的镜像环境不统一导致。
后续问题:如何确认两个环境是否统一?(上面的配置文件为什么可以解决上面的问题?)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值