The ease of installing the dependent libraries is often a matter of personal luck. Sometimes a simple pip install xx or apt-get install xx can succeed, and sometimes it’s a pit of life and death, and various errors are reported. I just fell into a deep pit, and after a day of tossing, I found various solutions online, but fortunately I finally crawled out. . . If my method is useful to you, please give me a compliment, thank you
Installation environment :
pip version:19.3.1
python version:3.7.4
cmake version:3.15.3
gcc version:5.5.0
OS version:ubuntu16.04
installation method:
pip install dlib==19.17.0
I use version 19.17.0 here, you can also use the latest version 19.18.0, try to use a newer version, because no matter you use the new version of python3.5, 3.6 or 3.7
Can be used, do not use before 19.7.0.
If you are lucky, you can install successfully through the above line of commands. If you report the following error like me, you can use the following command to solve it (the solution can be found from the dlib official website: http://dlib.net /compile.html )
sudo apt-get install libx11-dev
The error is as follows:
20171010
Collecting dlib==19.17.0
Using cached https://files.pythonhosted.org/packages/05/57/e8a8caa3c89a27f80bc78da39c423e2553f482a3705adc619176a3a24b36/dlib-19.17.0.tar.gz
Building wheels for collected packages: dlib
Building wheel for dlib (setup.py) ... error
ERROR: Command errored out with exit status 1:
command: /home/ailab/anaconda3/envs/py35/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-wx78xd9i/dlib/setup.py'"'"'; __file__='"'"'/tmp/pip-install-wx78xd9i/dlib/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-t7og5x5w --python-tag cp37
cwd: /tmp/pip-install-wx78xd9i/dlib/
Complete output (76 lines):
20171010
running bdist_wheel
running build
running build_py
package init file 'dlib/__init__.py' not found (or not a regular file)
running build_ext
Building extension for Python 3.7.4 (default, Aug 9 2019, 18:51:30)
Invoking CMake setup: 'cmake /tmp/pip-install-wx78xd9i/dlib/tools/python -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/tmp/pip-install-wx78xd9i/dlib/build/lib.linux-x86_64-3.7 -DPYTHON_EXECUTABLE=/home/ailab/anaconda3/envs/py35/bin/python -DCMAKE_BUILD_TYPE=Release'
CMake Warning (dev) in CMakeLists.txt:
No project() command is present. The top-level CMakeLists.txt file must
contain a literal, direct call to the project() command. Add a line of
code such as
project(ProjectName)
near the top of the file, but after cmake_minimum_required().
CMake is pretending there is a "project(Project)" command on the first
line.
This warning is for project developers. Use -Wno-dev to suppress it.
-- The C compiler identification is GNU 5.5.0
-- The CXX compiler identification is GNU 5.5.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PythonInterp: /home/ailab/anaconda3/envs/py35/bin/python (found version "3.7.4")
CMake Error at /tmp/pip-install-wx78xd9i/dlib/dlib/external/pybind11/tools/FindPythonLibsNew.cmake:122 (message):
Python config failure: Python is 0-bit, chosen compiler is 64-bit
Call Stack (most recent call first):
/tmp/pip-install-wx78xd9i/dlib/dlib/external/pybind11/tools/pybind11Tools.cmake:16 (find_package)
/tmp/pip-install-wx78xd9i/dlib/dlib/external/pybind11/CMakeLists.txt:33 (include)
-- Configuring incomplete, errors occurred!
See also "/tmp/pip-install-wx78xd9i/dlib/build/temp.linux-x86_64-3.7/CMakeFiles/CMakeOutput.log".
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-install-wx78xd9i/dlib/setup.py", line 261, in <module>
'Topic :: Software Development',
File "/home/ailab/anaconda3/envs/py35/lib/python3.7/site-packages/setuptools/__init__.py", line 145, in setup
return distutils.core.setup(**attrs)
File "/home/ailab/anaconda3/envs/py35/lib/python3.7/distutils/core.py", line 148, in setup
dist.run_commands()
File "/home/ailab/anaconda3/envs/py35/lib/python3.7/distutils/dist.py", line 966, in run_commands
self.run_command(cmd)
File "/home/ailab/anaconda3/envs/py35/lib/python3.7/distutils/dist.py", line 985, in run_command
cmd_obj.run()
File "/home/ailab/anaconda3/envs/py35/lib/python3.7/site-packages/wheel/bdist_wheel.py", line 192, in run
self.run_command('build')
File "/home/ailab/anaconda3/envs/py35/lib/python3.7/distutils/cmd.py", line 313, in run_command
self.distribution.run_command(command)
File "/home/ailab/anaconda3/envs/py35/lib/python3.7/distutils/dist.py", line 985, in run_command
cmd_obj.run()
File "/home/ailab/anaconda3/envs/py35/lib/python3.7/distutils/command/build.py", line 135, in run
self.run_command(cmd_name)
File "/home/ailab/anaconda3/envs/py35/lib/python3.7/distutils/cmd.py", line 313, in run_command
self.distribution.run_command(command)
File "/home/ailab/anaconda3/envs/py35/lib/python3.7/distutils/dist.py", line 985, in run_command
cmd_obj.run()
File "/tmp/pip-install-wx78xd9i/dlib/setup.py", line 135, in run
self.build_extension(ext)
File "/tmp/pip-install-wx78xd9i/dlib/setup.py", line 172, in build_extension
subprocess.check_call(cmake_setup, cwd=build_folder)
File "/home/ailab/anaconda3/envs/py35/lib/python3.7/subprocess.py", line 347, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['cmake', '/tmp/pip-install-wx78xd9i/dlib/tools/python', '-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/tmp/pip-install-wx78xd9i/dlib/build/lib.linux-x86_64-3.7', '-DPYTHON_EXECUTABLE=/home/ailab/anaconda3/envs/py35/bin/python', '-DCMAKE_BUILD_TYPE=Release']' returned non-zero exit status 1.
----------------------------------------
ERROR: Failed building wheel for dlib
Running setup.py clean for dlib
Failed to build dlib
Installing collected packages: dlib
Running setup.py install for dlib ... error
ERROR: Command errored out with exit status 1:
command: /home/ailab/anaconda3/envs/py35/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-wx78xd9i/dlib/setup.py'"'"'; __file__='"'"'/tmp/pip-install-wx78xd9i/dlib/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-4j1ykojr/install-record.txt --single-version-externally-managed --compile
cwd: /tmp/pip-install-wx78xd9i/dlib/
Complete output (78 lines):
20171010
running install
running build
running build_py
package init file 'dlib/__init__.py' not found (or not a regular file)
running build_ext
Building extension for Python 3.7.4 (default, Aug 9 2019, 18:51:30)
Invoking CMake setup: 'cmake /tmp/pip-install-wx78xd9i/dlib/tools/python -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/tmp/pip-install-wx78xd9i/dlib/build/lib.linux-x86_64-3.7 -DPYTHON_EXECUTABLE=/home/ailab/anaconda3/envs/py35/bin/python -DCMAKE_BUILD_TYPE=Release'
CMake Warning (dev) in CMakeLists.txt:
No project() command is present. The top-level CMakeLists.txt file must
contain a literal, direct call to the project() command. Add a line of
code such as
project(ProjectName)
near the top of the file, but after cmake_minimum_required().
CMake is pretending there is a "project(Project)" command on the first
line.
This warning is for project developers. Use -Wno-dev to suppress it.
-- The C compiler identification is GNU 5.5.0
-- The CXX compiler identification is GNU 5.5.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PythonInterp: /home/ailab/anaconda3/envs/py35/bin/python (found version "3.7.4")
CMake Error at /tmp/pip-install-wx78xd9i/dlib/dlib/external/pybind11/tools/FindPythonLibsNew.cmake:122 (message):
Python config failure: Python is 0-bit, chosen compiler is 64-bit
Call Stack (most recent call first):
/tmp/pip-install-wx78xd9i/dlib/dlib/external/pybind11/tools/pybind11Tools.cmake:16 (find_package)
/tmp/pip-install-wx78xd9i/dlib/dlib/external/pybind11/CMakeLists.txt:33 (include)
-- Configuring incomplete, errors occurred!
See also "/tmp/pip-install-wx78xd9i/dlib/build/temp.linux-x86_64-3.7/CMakeFiles/CMakeOutput.log".
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-install-wx78xd9i/dlib/setup.py", line 261, in <module>
'Topic :: Software Development',
File "/home/ailab/anaconda3/envs/py35/lib/python3.7/site-packages/setuptools/__init__.py", line 145, in setup
return distutils.core.setup(**attrs)
File "/home/ailab/anaconda3/envs/py35/lib/python3.7/distutils/core.py", line 148, in setup
dist.run_commands()
File "/home/ailab/anaconda3/envs/py35/lib/python3.7/distutils/dist.py", line 966, in run_commands
self.run_command(cmd)
File "/home/ailab/anaconda3/envs/py35/lib/python3.7/distutils/dist.py", line 985, in run_command
cmd_obj.run()
File "/home/ailab/anaconda3/envs/py35/lib/python3.7/site-packages/setuptools/command/install.py", line 61, in run
return orig.install.run(self)
File "/home/ailab/anaconda3/envs/py35/lib/python3.7/distutils/command/install.py", line 545, in run
self.run_command('build')
File "/home/ailab/anaconda3/envs/py35/lib/python3.7/distutils/cmd.py", line 313, in run_command
self.distribution.run_command(command)
File "/home/ailab/anaconda3/envs/py35/lib/python3.7/distutils/dist.py", line 985, in run_command
cmd_obj.run()
File "/home/ailab/anaconda3/envs/py35/lib/python3.7/distutils/command/build.py", line 135, in run
self.run_command(cmd_name)
File "/home/ailab/anaconda3/envs/py35/lib/python3.7/distutils/cmd.py", line 313, in run_command
self.distribution.run_command(command)
File "/home/ailab/anaconda3/envs/py35/lib/python3.7/distutils/dist.py", line 985, in run_command
cmd_obj.run()
File "/tmp/pip-install-wx78xd9i/dlib/setup.py", line 135, in run
self.build_extension(ext)
File "/tmp/pip-install-wx78xd9i/dlib/setup.py", line 172, in build_extension
subprocess.check_call(cmake_setup, cwd=build_folder)
File "/home/ailab/anaconda3/envs/py35/lib/python3.7/subprocess.py", line 347, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['cmake', '/tmp/pip-install-wx78xd9i/dlib/tools/python', '-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/tmp/pip-install-wx78xd9i/dlib/build/lib.linux-x86_64-3.7', '-DPYTHON_EXECUTABLE=/home/ailab/anaconda3/envs/py35/bin/python', '-DCMAKE_BUILD_TYPE=Release']' returned non-zero exit status 1.
----------------------------------------
ERROR: Command errored out with exit status 1: /home/ailab/anaconda3/envs/py35/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-wx78xd9i/dlib/setup.py'"'"'; __file__='"'"'/tmp/pip-install-wx78xd9i/dlib/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-4j1ykojr/install-record.txt --single-version-externally-managed --compile Check the logs for full command output.
In addition, if you use python setup.py install to report an error similar to the above, you can also use the above solution to solve it. Please refer to the link below for specific errors. Posting is a bit long
https://github.com/davisking/dlib/issues/1903
I originally wanted to ask the dlib code manager for this issue, but I solved it by myself, so I posted a solution later.