"error: Unable to find vcvarsall.bat" when compiling Cython code
Question:
As suggested here, I have succesfully installed Microsoft Visual C++ Compiler for Python 2.7 to compile some Cython code, but:
from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules = cythonize("module1.pyx"))
still produces:
error: Unable to find vcvarsall.bat
How to compile Cython code with Python 2.7 (for example on Windows 7 x64)?
Note: I already carefully read the question error: Unable to find vcvarsall.bat but the main answers (including modifying msvc9compiler.py
) didn’t solve it.
Answers:
I spent hours on this, and the information was not easily findable in error: Unable to find vcvarsall.bat, that’s why I post it here with the “answer your own question” feature:
-
Step 1: Install Microsoft Visual C++ Compiler for Python 2.7
-
Remark: You don’t need to modify msvc9compiler.py
as often suggested in many forum posts
-
Step 2: Just add import setuptools
that will help Python and “Microsoft Visual C++ Compiler for Python 2.7” work together.
import setuptools # important
from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules=cythonize("module1.pyx", build_dir="build"),
script_args=['build'],
options={'build':{'build_lib':'.'}})
Note: the script_args
parameter allows to run this setup.py with just python setup.py
(i.e. CTRL+B in your favorite editor like Sublime Text) instead of having to pass command-line arguments like this: python setup.py build
.
It works!
Python >= 3.5
I wanted to comment on @Basj (https://stackoverflow.com/a/53172602/6596203) answer but I couldn’t so I apologize. I just want to add to @Basj answer for people using Python >= 3.5, instead of Microsoft Visual C++ Compiler for Python 2.7, you can install just the C++ in this installer Build Tool for Visual Studio 2019 or you can simply install that with Chocolatey.
The solution that fixed it for me. Use Git Bash and use the following:
INCLUDE="C:/Program Files (x86)/Windows Kits/10/Include/10.0.22621.0/ucrt/;C:/Program Files (x86)/Windows Kits/10/Include/10.0.22621.0/shared/"
> LIB="C:/Program Files (x86)/Windows Kits/10/Lib/10.0.22621.0/ucrt/x64;C:/Program Files (x86)/Windows Kits/10/Lib/10.0.22621.0/um/x64"
> PATH=$PATH:/c/Program Files (x86)/Windows Kits/10/bin/10.0.22621.0/x64
> python -m pip install <package>
Then run python setup.py build_ext --inplace
Git Bash will detect visual Studio Cmd, Anaconda do not. I am running Microsoft Visual Studio 2022, Microsoft Visual Studio Tools and Microsoft Visual 2017 v 14.00
Theoretical solutions I tried that didn’t help me but others said it work below:
The same reason this issue is present these days is because Microsoft made it. Likely a pathing issue and issue is reappearing which is Microsoft specialty since 2018.
https://github.com/pypa/setuptools/issues/3329
This might fix for you but again this is Microsoft:
import setuptools # as requested
import distutils._msvccompiler
You can also change/check regedit:
[HKEY_LOCAL_MACHINESOFTWAREWOW6432NodeMicrosoftVisualStudio14.2SetupVC]
"ProductDir"="C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build"
[HKEY_LOCAL_MACHINESOFTWAREWOW6432NodeMicrosoftVisualStudio14.0SetupVC]
"ProductDir"="C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build"
Another option is to check the correct environment variables as well as delete any and all visual Studio stuff you do not need/use.
environment variable path and delete old ones and restart pc afterwards:
C:Program Files (x86)Microsoft Visual Studio 14.0VCbinamd64_arm
C:UsersAAAAAAppDataLocalProgramsMicrosoft VS Codebin
C:Program Files (x86)Windows Kits10bin10.0.22621.0x64
Use Anaconda and use the following:
SET DISTUTILS_USE_SDK=1 & "C:Program Files (x86)Microsoft Visual Studio2022BuildToolsVCAuxiliaryBuildvcvarsall.bat" x64
https://learn.microsoft.com/en-us/answers/questions/419525/microsoft-visual-c-140-or-greater-is-required.html
As suggested here, I have succesfully installed Microsoft Visual C++ Compiler for Python 2.7 to compile some Cython code, but:
from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules = cythonize("module1.pyx"))
still produces:
error: Unable to find vcvarsall.bat
How to compile Cython code with Python 2.7 (for example on Windows 7 x64)?
Note: I already carefully read the question error: Unable to find vcvarsall.bat but the main answers (including modifying msvc9compiler.py
) didn’t solve it.
I spent hours on this, and the information was not easily findable in error: Unable to find vcvarsall.bat, that’s why I post it here with the “answer your own question” feature:
-
Step 1: Install Microsoft Visual C++ Compiler for Python 2.7
-
Remark: You don’t need to modify
msvc9compiler.py
as often suggested in many forum posts -
Step 2: Just add
import setuptools
that will help Python and “Microsoft Visual C++ Compiler for Python 2.7” work together.import setuptools # important from distutils.core import setup from Cython.Build import cythonize setup(ext_modules=cythonize("module1.pyx", build_dir="build"), script_args=['build'], options={'build':{'build_lib':'.'}})
Note: the
script_args
parameter allows to run this setup.py with justpython setup.py
(i.e. CTRL+B in your favorite editor like Sublime Text) instead of having to pass command-line arguments like this:python setup.py build
.
It works!
Python >= 3.5
I wanted to comment on @Basj (https://stackoverflow.com/a/53172602/6596203) answer but I couldn’t so I apologize. I just want to add to @Basj answer for people using Python >= 3.5, instead of Microsoft Visual C++ Compiler for Python 2.7, you can install just the C++ in this installer Build Tool for Visual Studio 2019 or you can simply install that with Chocolatey.
The solution that fixed it for me. Use Git Bash and use the following:
INCLUDE="C:/Program Files (x86)/Windows Kits/10/Include/10.0.22621.0/ucrt/;C:/Program Files (x86)/Windows Kits/10/Include/10.0.22621.0/shared/"
> LIB="C:/Program Files (x86)/Windows Kits/10/Lib/10.0.22621.0/ucrt/x64;C:/Program Files (x86)/Windows Kits/10/Lib/10.0.22621.0/um/x64"
> PATH=$PATH:/c/Program Files (x86)/Windows Kits/10/bin/10.0.22621.0/x64
> python -m pip install <package>
Then run python setup.py build_ext --inplace
Git Bash will detect visual Studio Cmd, Anaconda do not. I am running Microsoft Visual Studio 2022, Microsoft Visual Studio Tools and Microsoft Visual 2017 v 14.00
Theoretical solutions I tried that didn’t help me but others said it work below:
The same reason this issue is present these days is because Microsoft made it. Likely a pathing issue and issue is reappearing which is Microsoft specialty since 2018.
https://github.com/pypa/setuptools/issues/3329
This might fix for you but again this is Microsoft:
import setuptools # as requested
import distutils._msvccompiler
You can also change/check regedit:
[HKEY_LOCAL_MACHINESOFTWAREWOW6432NodeMicrosoftVisualStudio14.2SetupVC]
"ProductDir"="C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build"
[HKEY_LOCAL_MACHINESOFTWAREWOW6432NodeMicrosoftVisualStudio14.0SetupVC]
"ProductDir"="C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build"
Another option is to check the correct environment variables as well as delete any and all visual Studio stuff you do not need/use.
environment variable path and delete old ones and restart pc afterwards:
C:Program Files (x86)Microsoft Visual Studio 14.0VCbinamd64_arm
C:UsersAAAAAAppDataLocalProgramsMicrosoft VS Codebin
C:Program Files (x86)Windows Kits10bin10.0.22621.0x64
Use Anaconda and use the following:
SET DISTUTILS_USE_SDK=1 & "C:Program Files (x86)Microsoft Visual Studio2022BuildToolsVCAuxiliaryBuildvcvarsall.bat" x64
https://learn.microsoft.com/en-us/answers/questions/419525/microsoft-visual-c-140-or-greater-is-required.html