Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

pyinstaller error: OSError: Python library not found: libpython3.4mu.so.1.0, libpython3.4m.so.1.0, libpython3.4.so.1.0

I'm using Python 3.4.4 on Centos7.

I've created a python program on my local machine that makes use of qt modules. The program is running fine on my local machine. I'm now trying to create an executable with pyinstaller. I'm using the command:

pyinstaller main.py

I'm getting the following output:

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)

Does anyone know what the issue could be? Just to say I have python3-devel and python-devel installed (in relation to the suggestion at the end of the printed output.) Thanks

like image 723
neilH Avatar asked Mar 28 '17 10:03

neilH


3 Answers

for Linux system like your CentOS, try rebuild python to generated shared lib using:

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

as said in pyenv offical doc

like image 50
crifan Avatar answered Oct 31 '22 03:10

crifan


You must install python-dev for your python's version

for example:

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

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

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

One of these errors can be puzzling, however: IOError("Python library not found!") PyInstaller needs to bundle the Python library, which is the main part of the Python interpreter, linked as a dynamic load library. The name and location of this file varies depending on the platform in use. Some Python installations do not include a dynamic Python library by default (a static-linked one may be present but cannot be used). You may need to install a development package of some kind. Or, the library may exist but is not in a folder where PyInstaller is searching.

The places where PyInstaller looks for the python library are different in different operating systems, but /lib and /usr/lib are checked in most systems. If you cannot put the python library there, try setting the correct path in the environment variable LD_LIBRARY_PATH in Linux or DYLD_LIBRARY_PATH in OS X.

Reference

like image 42
RaminNietzsche Avatar answered Oct 31 '22 03:10

RaminNietzsche


I have solved this in the way below:

1st. check your system if it has libpython3.4m.so.1.0. If yes, go to step 2nd. If no, download it(I'm using anaconda python, so I have it in anaconda folder.)

2nd. sudo cp /folder/to/your/libpython3.4m.so.1.0 /usr/lib

like image 25
Chengxing Zhang Avatar answered Oct 31 '22 04:10

Chengxing Zhang