【问题标题】:pyinstaller error: OSError: Python library not found: libpython3.4mu.so.1.0, libpython3.4m.so.1.0, libpython3.4.so.1.0pyinstaller 错误:OSError:找不到 Python 库:libpython3.4mu.so.1.0、libpython3.4m.so.1.0、libpython3.4.so.1.0
【发布时间】:2017-08-21 09:05:07
【问题描述】:

我在 Centos7 上使用 Python 3.4.4。

我在本地机器上创建了一个使用 qt 模块的 python 程序。该程序在我的本地机器上运行良好。 我现在正在尝试使用 pyinstaller 创建一个可执行文件。我正在使用命令:

pyinstaller main.py

我得到以下输出:

40 INFO: PyInstaller: 3.2.1
40 INFO: Python: 3.4.4
41 INFO: Platform: Linux-3.10.0-327.36.3.el7.x86_64-x86_64-with-centos-7.3.1611-Core
41 INFO: wrote /home/neilharris/Documents/Python_Projects/transcoder/main.spec
42 INFO: UPX is not available.
44 INFO: Extending PYTHONPATH with paths
['/home/neilharris/Documents/Python_Projects/transcoder',
 '/home/neilharris/Documents/Python_Projects/transcoder']
44 INFO: checking Analysis
44 INFO: Building Analysis because out00-Analysis.toc is non existent
44 INFO: Initializing module dependency graph...
45 INFO: Initializing module graph hooks...
47 INFO: Analyzing base_library.zip ...
1869 INFO: Processing pre-find module path hook   distutils
3030 INFO: running Analysis out00-Analysis.toc
3039 INFO: Caching module hooks...
3046 INFO: Analyzing /home/neilharris/Documents/Python_Projects/transcoder/main.py
3089 INFO: Loading module hooks...
3089 INFO: Loading module hook "hook-xml.py"...
3353 INFO: Loading module hook "hook-encodings.py"...
3437 INFO: Loading module hook "hook-PyQt4.py"...
3438 INFO: Loading module hook "hook-distutils.py"...
3440 INFO: Loading module hook "hook-PyQt4.QtCore.py"...
3575 INFO: Loading module hook "hook-pydoc.py"...
3576 INFO: Loading module hook "hook-PyQt4.QtGui.py"...
3849 INFO: Looking for ctypes DLLs
3861 INFO: Analyzing run-time hooks ...
3867 INFO: Including run-time hook 'pyi_rth_qt4plugins.py'
3877 INFO: Looking for dynamic libraries
ldd: warning: you do not have execution permission for `/usr/local/lib/python3.4/site-packages/PyQt4/QtGui.so'
ldd: warning: you do not have execution permission for `/usr/local/lib/python3.4/site-packages/PyQt4/QtCore.so'
5115 INFO: Looking for eggs
5115 INFO: Python library not in binary depedencies. Doing additional searching...
Traceback (most recent call last):
  File "/usr/local/bin/pyinstaller", line 9, in <module>
    load_entry_point('PyInstaller==3.2.1', 'console_scripts', 'pyinstaller')()
  File "/usr/local/lib/python3.4/site-packages/PyInstaller/__main__.py", line 90, in run
    run_build(pyi_config, spec_file, **vars(args))
  File "/usr/local/lib/python3.4/site-packages/PyInstaller/__main__.py", line 46, in run_build
    PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
  File "/usr/local/lib/python3.4/site-packages/PyInstaller/building/build_main.py", line 788, in main
    build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
  File "/usr/local/lib/python3.4/site-packages/PyInstaller/building/build_main.py", line 734, in build
    exec(text, spec_namespace)
  File "<string>", line 16, in <module>
  File "/usr/local/lib/python3.4/site-packages/PyInstaller/building/build_main.py", line 212, in __init__
    self.__postinit__()
  File "/usr/local/lib/python3.4/site-packages/PyInstaller/building/datastruct.py", line 161, in __postinit__
    self.assemble()
  File "/usr/local/lib/python3.4/site-packages/PyInstaller/building/build_main.py", line 543, in assemble
    self._check_python_library(self.binaries)
  File "/usr/local/lib/python3.4/site-packages/PyInstaller/building/build_main.py", line 626, in _check_python_library
    raise IOError(msg)
OSError: Python library not found: libpython3.4m.so.1.0, libpython3.4mu.so.1.0, libpython3.4.so.1.0
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)

有谁知道可能是什么问题? 只是说我安装了 python3-devel 和 python-devel (与打印输出末尾的建议有关。) 谢谢

【问题讨论】:

  • 可能python-devel 未安装
  • 您好,感谢您的回复,正如我在帖子末尾所说的那样,已安装 python-devel 和 python3-devel。
  • 解决办法是安装python34-devel

标签: python python-3.x pyqt4 pyinstaller


【解决方案1】:

你必须为你的 python 版本安装 python-dev

例如:

Debian/Ubuntu - Python 2.7 ---> python2.7-dev

CentOs/RedHat - Python 3.4 ---> python34-devel

CentOs/RedHat - Python 2.7 ---> python27-devel

其中一个错误可能令人费解,但是:IOError("Python library not found!") PyInstaller 需要捆绑 Python 库,它是 Python 解释器的主要部分,链接为动态加载库。此文件的名称和位置因使用的平台而异。默认情况下,某些 Python 安装不包含动态 Python 库(可能存在静态链接但不能使用)。您可能需要安装某种开发包。或者,该库可能存在但不在 PyInstaller 正在搜索的文件夹中。

PyInstaller查找python库的地方在不同的操作系统中是不一样的,但是在大多数系统中都会检查/lib和/usr/lib。如果无法将 python 库放在那里,请尝试在 Linux 中的环境变量 LD_LIBRARY_PATH 或 OS X 中的 DYLD_LIBRARY_PATH 中设置正确的路径。

Reference

【讨论】:

  • 您好,感谢您的回复。这没有用,我已将我的 python3.4 库 (/usr/local/lib/) 的路径添加到 LD_LIBRARY_PATH。我也尝试将此库复制到 /usr/lib。不过我遇到了同样的错误。
  • 我已经在我的 PC 上对文件 libpython3.4m.so.1.0、libpython3.4mu.so.1.0 和 libpython3.4.so.1.0 执行了查找命令,但没有显示任何内容。我猜这可能是问题所在?不知道如何解决
  • 搜索 libpython3.4m.so,如果可以找到,请做一个链接。
  • 好的,我找到了答案!我需要安装我通过 yum 管理的 python34-devel。
【解决方案2】:

我已经通过以下方式解决了这个问题:

第一。检查你的系统是否有 libpython3.4m.so.1.0。如果是,请转到第 2 步。如果没有,下载它(我使用的是anaconda python,所以我在anaconda文件夹中。)

第二。 sudo cp /folder/to/your/libpython3.4m.so.1.0 /usr/lib

【讨论】:

  • 像魅力一样工作。请注意,在 github 上有一个开放的 issue 关于它。如果有人想加快速度,请在relevant place 上点赞或评论。
【解决方案3】:

对于像 CentOS 这样的 Linux 系统,尝试使用以下命令重建 python 以生成共享库:

env PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 3.4.4

pyenv offical doc中所说

【讨论】:

  • 谢谢——这在 docs / wiki 中很难直接找到,但这正是它在 macOS 上为我工作的原因。
  • 确保卸载而不是对控制台提示说重新安装,否则在我的情况下没有工作。
【解决方案4】:

对于可能遇到此问题的开发人员,可以轻松使用 conda 虚拟环境,通过此您可以指定所需的确切 python 版本,并且无需担心库!只需安装 conda 并使用以下命令创建一个新的虚拟环境: conda create -n your_env_name python=needed_python_version(e.g.3.7.4)

【讨论】:

    【解决方案5】:

    通过运行以下命令解决了 Ubuntu 16.04 的这个问题:

    1. sudo add-apt-repository ppa:deadsnakes/ppa
    • 请检查上面的ppa是否仍然有效,否则添加最新的ppa。
    • 如果您收到“未添加用户或项目”错误,则可能是防火墙问题,因此请联系您的 IT 管理员以解除对所需站点的阻止。
    1. sudo apt-get 更新
    2. sudo apt-get install python3.6
    3. sudo apt-get install python3.6-dev
    4. pip3 安装 pyinstaller

    【讨论】:

      猜你喜欢
      • 2018-08-21
      • 2021-01-18
      • 2014-10-22
      • 1970-01-01
      • 2016-11-03
      • 1970-01-01
      • 1970-01-01
      • 2015-08-20
      • 2023-04-06
      相关资源
      最近更新 更多