centos6.6安装pyinstaller的过程及errror:shared libraries解决

1.本机centos6.6安装python3的方式:
python3.6.5的源码编译安装

# 准备编译环境
yum groupinstall 'Development Tools'
yum install zlib-devel bzip2-devel  openssl-devel ncurses-devel
# 创建安装目录
mkdir /usr/local/python3
# 解压
tar -xvJf Python-3.6.5.tar.xz
# 编译安装
cd Python-3.6.5
./configure --prefix=/usr/local/python3 --enable-optimizations
make
make install
# 是以优化的方式安装python3
--enable-optimizations

2.pyinstaller包的安装及异常处理

# 安装pyinstaller包
pip install pyinstaller

pyinstaller打包的demo示例:

# 创建目录
mkdir demo
# 进入目录
cd demo
# 创建demo
vi demo.py
# 写入内容,保存退出
name = input("请输入您的姓名:")
print(name)

打包

# 在demo目录下执行 打包为一个可执行文件
pyinstaller -F demo.py

参数的详情可以参考官方文档,地址:https://pyinstaller.readthedocs.io/en/stable/usage.html
pyinstaller打包的过程中异常的代码:

35 INFO: PyInstaller: 3.5
35 INFO: Python: 3.6.5
36 INFO: Platform: Linux-4.4.0-142-generic-x86_64-with-centos-6.10-Final
37 INFO: wrote /root/test.spec
39 INFO: UPX is not available.
40 INFO: Extending PYTHONPATH with paths
['/root', '/root']
40 INFO: checking Analysis
40 INFO: Building Analysis because Analysis-00.toc is non existent
40 INFO: Initializing module dependency graph...
41 INFO: Initializing module graph hooks...
43 INFO: Analyzing base_library.zip ...
2846 INFO: running Analysis Analysis-00.toc
2868 INFO: Caching module hooks...
2872 INFO: Analyzing /root/test.py
2875 INFO: Loading module hooks...
2875 INFO: Loading module hook "hook-pydoc.py"...
2876 INFO: Loading module hook "hook-encodings.py"...
2976 INFO: Loading module hook "hook-xml.py"...
3191 INFO: Looking for ctypes DLLs
3191 INFO: Analyzing run-time hooks ...
3197 INFO: Looking for dynamic libraries
3577 INFO: Looking for eggs
3577 INFO: Python library not in binary dependencies. Doing additional searching...
Traceback (most recent call last):
  File "/usr/local/python3/bin/pyinstaller", line 8, in <module>
    sys.exit(run())
  File "/usr/local/python3/lib/python3.6/site-packages/PyInstaller/__main__.py", line 111, in run
    run_build(pyi_config, spec_file, **vars(args))
  File "/usr/local/python3/lib/python3.6/site-packages/PyInstaller/__main__.py", line 63, in run_build
    PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
  File "/usr/local/python3/lib/python3.6/site-packages/PyInstaller/building/build_main.py", line 844, in main
    build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
  File "/usr/local/python3/lib/python3.6/site-packages/PyInstaller/building/build_main.py", line 791, in build
    exec(code, spec_namespace)
  File "/root/test.spec", line 17, in <module>
    noarchive=False)
  File "/usr/local/python3/lib/python3.6/site-packages/PyInstaller/building/build_main.py", line 243, in __init__
    self.__postinit__()
  File "/usr/local/python3/lib/python3.6/site-packages/PyInstaller/building/datastruct.py", line 158, in __postinit__
    self.assemble()
  File "/usr/local/python3/lib/python3.6/site-packages/PyInstaller/building/build_main.py", line 575, in assemble
    self._check_python_library(self.binaries)
  File "/usr/local/python3/lib/python3.6/site-packages/PyInstaller/building/build_main.py", line 681, in _check_python_library
    raise IOError(msg)
OSError: Python library not found: libpython3.6mu.so.1.0, libpython3.6m.so.1.0, libpython3.6.so.1.0, libpython3.6m.so
This would mean your Python installation doesn't come with proper library files.
This usually happens by missing development package, or unsuitable build parameters of Python installation.

* On Debian/Ubuntu, you would need to install Python development packages
  * apt-get install python3-dev
  * apt-get install python-dev
* If you're building Python by yourself, please rebuild your Python with `--enable-shared` (or, `--enable-framework` on Darwin)

异常问题:从异常代码中可以看出OSError: Python library not found,异常主要是自己安装Python过程中没有设置Python的库共享,pyinstaller打包过程依赖缺失。

解决方案:如下截图所示,需要重新对Python安装包进行编译安装
在这里插入图片描述
Python重新配置,编译安装

# 进入Python-3.6.5的目录 重新设置配置
./configure --prefix=/usr/local/python3 --enable-shared
# 编译安装
make
make install

在python3.6.5的目录下可以看到生成的库文件:
在这里插入图片描述
测试Python是否安装成功:

# 执行命令 进入交互环境
python3

可能会出现以下异常,需要复制共享库到相应的目录

python3: error while loading shared libraries: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory

解决方案

# 查看python3动态链接库
ldd /usr/bin/python3
# 没有libpython3.6m.so.1.0则,进入Python-3.6.5 目录进行复制文件
cp libpython3.6m.so.1.0 /usr/local/lib64/
cp libpython3.6m.so.1.0 /usr/lib
cp libpython3.6m.so.1.0 /usr/lib64/

异常解决之后重新打包,如下图可以看出,成功加载python的库,exe文件也打包成功:
在这里插入图片描述
生成的新文件,进入dist目录,可以看到demo的可执行文件:
在这里插入图片描述

发布了27 篇原创文章 · 获赞 13 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_40122615/article/details/103045679