热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linuxpyinstaller打包问题enableshared

线上服务器的系统基本都是centos6.x,python版本是2.7.5。仅仅是为字符的问题处理上,应该使用python3.x,而不是python2。所以用pyinstaller打

线上服务器的系统基本都是centos 6.x,python 版本是 2.7.5。仅仅是为字符的问题处理上,应该使用python3.x,而不是python2。所以用 pyinstaller 打包 python 3.x 运行的脚本,而不用在线上安装依赖的环境。

wget 下载源码,configure ;make ;make install 三部曲安装。


wget https://www.python.org/ftp/python/3.4.0/Python-3.4.0.tgz
tar -zxvf Python-3.4.0.tgz
cd Python-3.4.0
./configure
make
make install

安装完之后,包管理器 pip3 也有了。如果没有,下载pip的源码使用 python3 setup.py install 来安装。使用 pip3 或者源码来安装 pyinstaller.

使用 pyinstaller 将所有依赖打包到一个文件当中(如果提示 pyinstaller 命令不存在的,需要处理一下环境变量):

pyinstaller --console --onefile script.py

结果报错:

* 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)

重新编译安装,按提示带上参数来生成makefile,然后再make;make install安装。

./configure --enable-shared

编译安装完毕,运行 python3,提示 error while loading shared libraries: 

运行时链接动态库失败,编译时安装该动态库在 (find /usr -name 'libpython3.6m.so.1.0' 搜一下)

/usr/local/lib

目录下。该路径不在连链接器默认的动态库搜索范围里,可以 ldconfig -v | grep python 看不到该动态库。

若该库不在链接器的搜索范围内,执行 ldd $(which python3) 可查看到该库指向为 not found.

        linux-vdso.so.1 =>  (0x00007ffd609e2000)
        libpython3.4m.so.1.0 => not found
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f6e934cf000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f6e932ca000)
        libutil.so.1 => /lib64/libutil.so.1 (0x00007f6e930c7000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f6e92e43000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f6e92aae000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f6e93ba2000)

ldconfig 命令用来管理链接器的动态库搜索路径,默认的是 /lib 和 /usr/lib 已经 /etc/ld.so.conf 配置文件中包含的目录,将 /usr/local/lib 添加到 /etc/ld.so.conf 当中,执行

ldconfig

刷新一下缓存。

此时再运行 python3,使用 pyinstaller 打包也都正常。

另外,使用 ldconfig 来修改系统的动态库的搜索路径,还有一个临时的替代方法就是修改预定义变量:LD_LIBRARY_PATH,然后 export 使得子进程当中能够使用。


推荐阅读
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • 如何将PHP文件上传至服务器及正确配置服务器地址 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 在 CentOS 7 系统中安装 Scrapy 时遇到了一些挑战。尽管 Scrapy 在 Ubuntu 上安装简便,但在 CentOS 7 上需要额外的配置和步骤。本文总结了常见问题及其解决方案,帮助用户顺利安装并使用 Scrapy 进行网络爬虫开发。 ... [详细]
  • Parallels Desktop for Mac 是一款功能强大的虚拟化软件,能够在不重启的情况下实现在同一台电脑上无缝切换和使用 Windows 和 macOS 系统中的各种应用程序。该软件不仅提供了高效稳定的性能,还支持多种高级功能,如拖放文件、共享剪贴板等,极大地提升了用户的生产力和使用体验。 ... [详细]
  • Ubuntu 22.04 安装搜狗输入法详细指南及常见问题解决方案
    本文将详细介绍如何在 Ubuntu 22.04 上安装搜狗输入法,并提供常见问题的解决方法。包括下载安装包、更新源、安装依赖项等步骤。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • Ansible:自动化运维工具详解
    Ansible 是一款新兴的自动化运维工具,基于 Python 开发,集成了多种运维工具(如 Puppet、CFEngine、Chef、Func 和 Fabric)的优点,实现了批量系统配置、程序部署和命令执行等功能。本文将详细介绍 Ansible 的架构、特性和优势。 ... [详细]
  • 深入解析C语言中结构体的内存对齐机制及其优化方法
    为了提高CPU访问效率,C语言中的结构体成员在内存中遵循特定的对齐规则。本文详细解析了这些对齐机制,并探讨了如何通过合理的布局和编译器选项来优化结构体的内存使用,从而提升程序性能。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • 在 CentOS 7 中,为了扩展可用软件包的数量,通常需要配置多个第三方软件源。这些第三方源包括 EPEL、Nux Dextop 和 ELRepo 等,它们提供了大量官方源中未包含的软件包,从而增强了系统的功能性和灵活性。通过正确配置这些源,用户可以轻松安装和管理更多种类的软件,满足不同的需求。 ... [详细]
  • 本文探讨了将PEBuilder转换为DIBooter.sh的方法,重点介绍了如何将DI工具集成到启动层,实现离线镜像引导安装。通过使用DD命令替代传统的grub-install工具,实现了GRUB的离线安装。此外,还详细解析了bootice工具的工作原理及其在该过程中的应用,确保系统在无网络环境下也能顺利引导和安装。 ... [详细]
  • 在Linux系统中,特别是Ubuntu和其他发行版中,配置TTY终端字体对于提升用户体验至关重要。本文将详细介绍如何在这些系统中设置TTY字体,并探讨Debian和Ubuntu的默认控制台字体选择。通过合理的字体配置,可以显著改善TTY终端的可读性和美观性。 ... [详细]
  • NanoPi2 使用体验深入解析(续篇)
    随着Raspberry Pi的问世,开源硬件领域迎来了前所未有的发展,激发了全球范围内的创新热潮。在中国,这一趋势同样催生了一系列类似的开发板,例如NanoPi 2。本文作为前篇的延续,将深入探讨NanoPi 2的实际使用体验,从性能、兼容性到应用场景,进行全面分析。 ... [详细]
author-avatar
别被风景迷了眼
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有