发布于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
# 是以优化的方式安装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的可执行文件:
作者:hello树先生
链接:https://www.pythonheidong.com/blog/article/158136/abaef60e90e7b487acc9/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!