程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2024-11(2)

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

发布于2019-11-17 13:26     阅读(2508)     评论(0)     点赞(21)     收藏(0)


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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
# 是以优化的方式安装python3
--enable-optimizations
  • 1
  • 2

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

# 安装pyinstaller包
pip install pyinstaller
  • 1
  • 2

pyinstaller打包的demo示例:

# 创建目录
mkdir demo
# 进入目录
cd demo
# 创建demo
vi demo.py
# 写入内容,保存退出
name = input("请输入您的姓名:")
print(name)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

打包

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

参数的详情可以参考官方文档,地址: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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53

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

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

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

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

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

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

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

解决方案

# 查看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/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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



所属网站分类: 技术文章 > 博客

作者:hello树先生

链接:https://www.pythonheidong.com/blog/article/158136/abaef60e90e7b487acc9/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

21 0
收藏该文
已收藏

评论内容:(最多支持255个字符)