[Bug]: cmake not found during dlib installation using pip (even though cmake installed correctly)
atharva-p opened this issue · 34 comments
What Operating System(s) are you seeing this problem on?
Windows
dlib version
19.24.4
Python version
3.12.1
Compiler
gcc
Expected Behavior
using pip in a virtual environment, install cmake
using pip install cmake
. then install dlib
using pip install dlib
. dlib installs successfully
Current Behavior
i've already installed cmake
through pip
. when i try to install dlib
through pip, it tries to find cmake
to build the wheel, however it is not able to. cmake
requirement is already satisfied. i am using a virtual envrinoment. cmake.exe
is also present in venv/Scripts
Steps to Reproduce
install dlib
(venv) PS C:\myFiles\dev\Hair_Style_Recommendation> pip install dlib
pip throws the following error
Collecting dlib
Using cached dlib-19.24.4.tar.gz (3.3 MB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: dlib
Building wheel for dlib (pyproject.toml) ... error
error: subprocess-exited-with-error
Building wheel for dlib (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [14 lines of output]
<string>:210: SyntaxWarning: invalid escape sequence '\('
<string>:211: SyntaxWarning: invalid escape sequence '\('
<string>:212: SyntaxWarning: invalid escape sequence '\('
running bdist_wheel
running build
running build_ext
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "C:\myFiles\dev\Hair_Style_Recommendation\venv\Scripts\cmake.exe\__main__.py", line 4, in <module>
ModuleNotFoundError: No module named 'cmake'
ERROR: CMake must be installed to build dlib
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for dlib
so i then check if cmake is installed. it is already installed.
(venv) PS C:\myFiles\dev\Hair_Style_Recommendation> python -m pip install cmake
Requirement already satisfied: cmake in c:\myfiles\dev\hair_style_recommendation\venv\lib\site-packages (3.29.3)
cmake.exe
is also present in venv/Scripts
(venv) PS C:\myFiles\dev\Hair_Style_Recommendation> Test-path "venv\Scripts\cmake.exe"
True
however, it still cannot find it and installation fails
Anything else?
i am using windows 11 23h2
. python version 3.12.1
. pip version 24.0
. cmake version (from pip) 3.29.3
After you installed cmake did you try to do the dilib build in a new window session like a new command prompt. You should close that window and open a new one ideally with Administrator access. Also, you need visual studio installed to compile dlib with cmake also. Is cmake in your path? If you enter cmake --version for example does it show you the build number?
Hi, installing cmake from apt works, yes, but for whatever reason, dlib=19.24.2 can be installed using the pip cmake but not dlib=19.24.4.
I'm not sure what the particular reason for this is though.
@davisking checked if cmake is in path, and it is
PS C:\Users\athar> cmake --version
cmake version 3.28.1
CMake suite maintained and supported by Kitware (kitware.com/cmake).
also i can build dlib with cmake but then can i use it with virtual environment that way? when i researched i got answers saying that i can't.
@lefteryx i tried it out, and dlib 19.24.2 installs with pip cmake
, however dlib 19.24.4 (latest) does not work
I'm not able to reproduce this. For me pip install dlib
installs 19.24.4 without any issue. I'm guessing something is broken about your cmake install. You will have to debug it 🤷
Note that that error is saying cmake isn't in your PATH
. You have to install cmake on your computer such that cmake is in your PATH
so that programs can run cmake
and not get an error about cmake not being available.
Just to confirm and make sure we're on the same page, I meant that I can install dlib=19.24.2
using the pip cmake only without having the apt cmake or Visual Studio. Instaling dlib=19.24.4
does not work with ONLY pip install cmake
and instead requires apt cmake.
Thanks for your response btw!
Oh that is probably it, thank you very much for your response!
Just to confirm and make sure we're on the same page, I meant that I can install
dlib=19.24.2
using the pip cmake only without having the apt cmake or Visual Studio. Instalingdlib=19.24.4
does not work with ONLYpip install cmake
and instead requires apt cmake. Thanks for your response btw!
Confirmed.
I run pip install cmake
then pip install dlib
, and i got same error above. After pip uninstall cmake
and sudo apt install cmake
, I can install dlib without any error.
What worked for me: [Windows]
- python v 3.8 ( i tried with 3.12, but did not worked)
- ensure that you have installed cmake in your venv before installing dlib
- download dlib-19.22.99-cp38-cp38-win_amd64.whl
- copy and paste the file 'dlib-19.22.99-cp38-cp38-win_amd64.whl' file in your project/venv/Scripts folder
- open project/venv/Scripts folder in terminal and
pip install dlib-19.22.99-cp38-cp38-win_amd64.whl
if still this did not work then install Visual C++ from microsoft website, restart pc and try again!
Hi, installing cmake from apt works, yes, but for whatever reason, dlib=19.24.2 can be installed using the pip cmake but not dlib=19.24.4. I'm not sure what the particular reason for this is though.
same i cant find the reason why i cant able to install this dlib=19.12.4.
Same problem. wt do ?
If you open a terminal window and type cmake and hit enter what happens? I'm talking about the same terminal window you would use to install dlib. If when you type cmake in that window you get an error about cmake not being found then it's not installed correctly. So you have to install cmake such that opening a terminal window and typing cmake and hitting enter doesn't give an error. On windows the simplest way to do that is to use the installer from cmake.org.
To say that real clearly, in whatever window you use to type the install command for dlib. First just type cmake and hit enter. If you get an error stop and do not attempt to install dlib. First get cmake installed.
sudo apt install git
activate your virtual environment...
Then:
pip install cmake
Check: cmake:
which cmake
Export path
export CMAKE=$(which cmake)
cmake --version
git clone https://github.com/davisking/dlib.git
cd dlib
mkdir build
cd build
cmake ..
cmake –build .
cd ..
(you should now be back in the dlib dir)
python3 setup.py install
(lto-wrapper at the end takes time)
Check dlib installation:
python3 -c "import dlib; print(dlib.__version__)
Install from git is not the best way. I hit same error on CentOS, sadly I can not resolved it by using apt something, yum install cmake just doesn't work, even tough my cmake (pip) and yum already install.
Still throw error.
pip install dlib (latest):
CMake suite maintained and supported by Kitware (kitware.com/cmake).
Python 3.9.2 (default, Mar 3 2021, 20:02:32)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cmake
>>> from cmake import cmake
>>>
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: dlib
Building wheel for dlib (pyproject.toml) ... error
error: subprocess-exited-with-error
× Building wheel for dlib (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [10 lines of output]
running bdist_wheel
running build
running build_ext
Traceback (most recent call last):
File "/data/miniconda3/envs/env-3.9.2/bin/cmake", line 5, in <module>
from cmake import cmake
ModuleNotFoundError: No module named 'cmake'
ERROR: CMake must be installed to build dlib
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for dlib
Failed to build dlib
pip install dlib==19.24.2
Successfully built dlib
Installing collected packages: dlib
Successfully installed dlib-19.24.2
@davisking Can u just take a look at the build script difference between them? So many users claimed that it must have some miss looked imports in build script, please take a look, they shouldn't have behaviored so weired among all users.
Thanks for the lib!
same problem here, trying to install CMake and then dlib in a Python venv v3.12 and got the error message:
error: subprocess-exited-with-error
× Building wheel for dlib (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [14 lines of output]
<string>:196: SyntaxWarning: invalid escape sequence '\('
<string>:197: SyntaxWarning: invalid escape sequence '\('
<string>:198: SyntaxWarning: invalid escape sequence '\('
running bdist_wheel
running build
running build_ext
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "C:\dev\facial_recognition\.venv\Scripts\cmake.exe\__main__.py", line 4, in <module>
ModuleNotFoundError: No module named 'cmake'
ERROR: CMake must be installed to build dlib
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for dlib
Failed to build dlib
ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (dlib)
1. Basics and Create faceuser without a password:
sudo apt update && sudo apt upgrade -y
sudo apt install -y python3 python3-pip python3-venv cmake git build-essential
sudo adduser --disabled-password --gecos "" faceuser
2. Create the directory for the virtual environment:
sudo mkdir -p /home/faceuser/faceapp
sudo chown faceuser:faceuser /home/faceuser/faceapp
3. Switch to the new user faceuser:
sudo -i -u faceuser
4. Navigate to the directory for the virtual environment:
cd /home/faceuser/faceapp
5. Set up the virtual environment:
python3 -m venv facevenv
6. Activate the virtual environment:
source facevenv/bin/activate
7. Install cmake:
pip install cmake
8. Verify cmake installation:
which cmake
9. Export the path to cmake:
export CMAKE=$(which cmake)
10. Check cmake version:
cmake --version
11. Clone dlib from GitHub:
git clone https://github.com/davisking/dlib.git
12. Change to the dlib directory:
cd dlib
13. Create and switch to the build directory:
mkdir build
cd build
14. Run cmake in the build directory:
cmake ..
15. Build with cmake:
cmake --build .
16. Switch back to the dlib directory:
cd ..
17. Run setup.py to install dlib:
python3 setup.py install
18. Verify dlib installation:
python3 -c "import dlib; print(dlib.version)"
19. Install face_recognition:
cd..
pip install face_recognition
20. Verify face_recognition installation:
python3 -c "import face_recognition; print(face_recognition.version)"
Install from git is not the best way. I hit same error on CentOS, sadly I can not resolved it by using apt something, yum install cmake just doesn't work, even tough my cmake (pip) and yum already install.
Still throw error.
pip install dlib (latest):
CMake suite maintained and supported by Kitware (kitware.com/cmake). Python 3.9.2 (default, Mar 3 2021, 20:02:32) [GCC 7.3.0] :: Anaconda, Inc. on linux Type "help", "copyright", "credits" or "license" for more information. >>> import cmake >>> from cmake import cmake >>> Installing build dependencies ... done Getting requirements to build wheel ... done Preparing metadata (pyproject.toml) ... done Building wheels for collected packages: dlib Building wheel for dlib (pyproject.toml) ... error error: subprocess-exited-with-error × Building wheel for dlib (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [10 lines of output] running bdist_wheel running build running build_ext Traceback (most recent call last): File "/data/miniconda3/envs/env-3.9.2/bin/cmake", line 5, in <module> from cmake import cmake ModuleNotFoundError: No module named 'cmake' ERROR: CMake must be installed to build dlib [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for dlib Failed to build dlib
pip install dlib==19.24.2
Successfully built dlib Installing collected packages: dlib Successfully installed dlib-19.24.2
@davisking Can u just take a look at the build script difference between them? So many users claimed that it must have some miss looked imports in build script, please take a look, they shouldn't have behaviored so weired among all users.
Thanks for the lib!
@lucasjinreal, what exactly did you type to get these errors? The dlib setup.py file does not import cmake
or have any dependency on any python cmake library. So I'm confused about where the errors you posted would be coming from
@mayrinkdotcom go to cmake.org, download their installer, and install it on your system. In the installer make sure you add cmake to your PATH when it asks if you want to do that.
@Boetty I'm not sure what your post is saying, but anyone using just python does not need to ever run any cmake build commands. Doing stuff like cmake ..
and cmake --build .
has no effect at all on any python user of dlib. So that is not needed.
@davisking Hello. Here is the issue. I merely executed pip install dlib
and no other operations. I am unsure why the setup.py
fails to import cmake
but instead gets an import despite its installation. Currently, the old version functions. And I have abandoned face_recognition and utilized insightface instead. However, dlib is always an excellent library and I appreciate your work. I merely wish to assist to prevent anyone else from encountering the same error repeatedly. It is worthy of a thorough examination.
@davisking Hello. Here is the issue. I merely executed
pip install dlib
and no other operations. I am unsure why thesetup.py
fails to importcmake
but instead gets an import despite its installation. Currently, the old version functions. And I have abandoned face_recognition and utilized insightface instead. However, dlib is always an excellent library and I appreciate your work. I merely wish to assist to prevent anyone else from encountering the same error repeatedly. It is worthy of a thorough examination.
I'm not able to reproduce this. Frankly, what it looks like is /data/miniconda3/envs/env-3.9.2/bin/cmake
is a python script that is broken. And /data/miniconda3/envs/env-3.9.2/bin
is in your PATH
. So when setup.py tries to run cmake it ends up running the broken /data/miniconda3/envs/env-3.9.2/bin/cmake
script. That is, it's running a broken miniconda cmake python script rather than the official cmake binary.
What needs to happen is we somehow forbid use of any pip installed cmake. For years and years now various python package systems have offered to install cmake but many of them include broken copies of cmake. Like the /data/miniconda3/envs/env-3.9.2/bin/cmake
there you see. I don't know what I can do on my end to prevent this from happening, since I don't have control over the miniconda cmake package.
But what you need to do is figure out how to get the real cmake in your PATH, then this will all work fine. Like if you do which cmake
if it says you are using a miniconda cmake then that's bad. You want to use an official cmake package (official as in blessed by the people at cmake.org, not one from any python repacker as so many of them are broken as you see here). The cmake from yum
should be fine on CentOS.
I pushed a new version of dlib just now that will print a much more informative error message about this when it happens to people in the future :)
@davisking Thank you for your feedback and the helpful explanations. I understand that typically, Python users should not need to manually run cmake .. and cmake --build . when installing dlib via pip. However, in my specific environment, I encountered an issue that made these steps necessary.
Even though I installed cmake via pip, it wasn’t detected during the build process, which led me to manually clone dlib and run the build process directly using cmake. This approach ensured (in my Environment)that cmake was properly utilized, allowing the installation to complete successfully.
While this may not be required in other environments, it was the only solution that worked in my case. That’s why I chose to follow this path.
Thank you again for your support and for taking the time to address this. I greatly appreciate your efforts and your direct involvement in helping to resolve these issues. Thanks for your time and the new Version.
BoeTTY
cmake ..
and cmake --build .
really definitely do not do anything when using python. All those commands do is make some files in a folder that is not used by any part of the python package. I keep seeing posts around the internet where people say those are part of the install process but they are 100% not related to any part of python and do not do anything :)
@davisking Thank you again for your response. I'm not sure what's being discussed online, but I do know that I spent days working with CMake and dlib in order to install face_recognition. In my case, it only worked with these commands. Why that is, and what exactly happened in the background, I don't know. But in the end, it's not important to me to debate these two commands, which were necessary in my situation. I just wanted to help others who might have had the same problems, because I know how exhausting it was for me to spend days getting it to work. As far as I know, there are no other ways to install face_recognition without CMake/dlib. I was simply relieved when it finally worked after days of effort, thanks to the experience I had, and I wanted to share that experience to make it easier for others. That's all. BoeTTY
Sure, I get that. I think what threw you off is the mine field of broken cmake packages in pypi :(
And what happened somewhere along your journey is you ended up with a non-broken cmake installed and then python setup.py install
, which is the only dlib command needed, then started to work.
Warning: this issue has been inactive for 35 days and will be automatically closed on 2024-09-25 if there is no further activity.
If you are waiting for a response but haven't received one it's possible your question is somehow inappropriate. E.g. it is off topic, you didn't follow the issue submission instructions, or your question is easily answerable by reading the FAQ, dlib's official compilation instructions, dlib's API documentation, or a Google search.
Warning: this issue has been inactive for 42 days and will be automatically closed on 2024-09-25 if there is no further activity.
If you are waiting for a response but haven't received one it's possible your question is somehow inappropriate. E.g. it is off topic, you didn't follow the issue submission instructions, or your question is easily answerable by reading the FAQ, dlib's official compilation instructions, dlib's API documentation, or a Google search.
I encountered this issue, and it was successfully resolved.
First, run
pip uninstall
then check the
cmake -version
if it does not exist, it will be downloaded and installed on the official website
Notice: this issue has been closed because it has been inactive for 47 days. You may reopen this issue if it has been closed in error.
Hi Davisking, just wanted to let you know that I had to set up two more Ubuntu systems with cmake/dlib and face_recognition yesterday. Everything worked perfectly. The error didn’t occur again. Many thanks, Stefan
Hi Davisking, just wanted to let you know that I had to set up two more Ubuntu systems with cmake/dlib and face_recognition yesterday. Everything worked perfectly. The error didn’t occur again. Many thanks, Stefan
Awesome 😁