Cython setup.py can't find installed Visual C++ Build Tools - python

I am attempting to build my cython code using this setup.py file:
from distutils.core import setup
from Cython.Build import cythonize
import numpy as np
setup(
name="My Cython Project",
ext_modules=cythonize("*.pyx", include_path=[np.get_include()], language="c++")
)
and
python setup.py build_ext --inplace
But am getting the error:
error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
But I installed the build tools and I know they work because I can manually build my project using these commands in the Developer Command Prompt for VS 2019:
cython -a -3 --cplus Myfile.pyx
cl /LD /O2 /EHsc [ include files ] Myfile.cpp [ python 3.8 lib ]
Why does cython think the build tools are not installed? Do I need to add something to PATH?
(I run the same project on my macOS machine with gcc installed and it works perfectly.)
Screenshot of my Visual Studio Installer Screen

The problem is that setup.py shows you incorrect version of MSVC. It's not the 14.0 that you need. I just did solved the very same issue myself, also for Python 3.8, so here are the steps.
When you compile something for Python, you should use the same compiler version. So let's see what compiler was used for you Python:
python -c "import sys; print(sys.version)"
Mine prints:
3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)]
So I need MSVC version 1916.
You can check which version it is here: https://en.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B . For me 1916 is Visual Studio 2017 version 15.9 - likely that's what you really need.
You to M$ downloads https://my.visualstudio.com/Downloads?q=Visual%20Studio%202015&pgroup= , search, for example, for "Visual Studio Community 2017 (version 15.9)" and install it (or just the compiler) and enjoy.
P.S. It is likely that you will need exactly that compiler for all your python 3.8 extensions (unless you use direct dll calls) and you will need to recompile the code you did in Studio 2019.

Related

MS Visual studio build tools failing while installing 'gpaw' python package which needs these tools

I want to install gpaw (a DFT calculation python package for physicists), so I used the command -
pip install gpaw
pip installed gpaw's all dependencies except gpaw itself & gave error -
error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
So, I downloaded the latest version & successfully installed visual studio build tools from the link above
But, after I tried to install gpaw using pip again, I got a new error -
cl : Command line warning D9025 : overriding '/DNDEBUG' with '/UNDEBUG'
cl : Command line error D8021 : invalid numeric argument '/Wno-unknown-pragmas'
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.33.31629\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2
Can someone tell me how to fix this failing execution of visual studio build tools?
What I tried to fix - I repaired the installed Visual Studio build tools using installer, but nothing changed.

Can't build Cython code even with correct Visual C++ Build Tools installed

I've been trying to build a basic test file with Cython, but I keep getting error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/.
I have a setup.py file:
from setuptools import setup
from Cython.Build import cythonize
setup(
name='testich',
ext_modules=cythonize("lmao.py"),
)
and I've been attempting to build it both with setup.py build_ext --inplace and cythonize -i lmao.py, but they both yield the same error.
I have tried nefedor's solution, but it hasn't worked for me. I've tried both the latest 2022 build tools and the 2019 build tools for my python version (having only one installed at a time), installing on my C: and D: drives, with no luck. I made sure C++ build tools were checked when installing.
I'm using Python 3.8.10 and Cython 3.0.0a11, and the latest version of setuptools
I was able to get it working by typing the command:
SET DISTUTILS_USE_SDK=1 & "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64
before building. Both setup.py build_ext --inplace and cythonize -i now work.
You will have to change the vcvarsall path/processor type in the command if your build tools install location/processor type are not the same.
Thanks to https://stackoverflow.com/a/73869315/20203839 and https://learn.microsoft.com/en-us/answers/questions/419525/microsoft-visual-c-140-or-greater-is-required.html for showing me the solution, even though the Microsoft questions page mentions Anaconda it works fine with CPython.

ImportError blpapi in Python

I'm trying to use blpapi in python. Since my company has a strict firewall, I had to do an offline install of the latest one from condaforge ('blpapi-3.17.1-py38_blpapicpp3.16.1.1_1'). I've tried nearly every solution on stackoverflow including:
Pasted the matching C++ SDK dll libraries for C++ 3.17.1.1 into the DAPI folder and anaconda site packages.
Also pasted the dll files in system32 and tried running import blapi with os.add_dll_directory function.
Added the bin and lib C++ SDK dll paths to the system environment PATH as well as in Spyder.
Installed Visual Studio and the relevant C++ MFC, C++/CLI support, MSVC v143 tools etc.
---------------------------- ENVIRONMENT -----------------------------
Platform: Windows-10-10.0.19041-SP0
Architecture: ('64bit', 'WindowsPE')
Python: 3.8.5 (default, Sep 3 2020, 21:29:08) [MSC v.1916 64 bit (AMD64)]
Python implementation: CPython
This Python version does not use PATH to find dlls
blpapi package at: "C:\ProgramData\Anaconda3\lib\site-packages"
Current directory: "C:\blp\blpapi_cpp_3.17.1.1\lib"
----------------------------------------------------------------------
DLL load failed while importing _versionhelper: The specified module could not be found.
Could not open the C++ SDK library.
Download and install the latest C++ SDK from:
http://www.bloomberg.com/professional/api-library
If the C++ SDK is already installed, Python 3.8+ on Windows requires that the
path to the library is added to 'add_dll_directory', i.e.:
with os.add_dll_directory('<path to blpapi dlls>'):
import blpapi```

install dlib using Visual Studio 2015 libraries

I've downloaded dlib and when I'm trying to install It using python setup install It give me this error, I'm using Visual Studio 2015 professional
running install
running bdist_egg
running egg_info
writing dependency_links to dlib.egg-info\dependency_links.txt
writing top-level names to dlib.egg-info\top_level.txt
writing dlib.egg-info\PKG-INFO
package init file 'dlib\__init__.py' not found (or not a regular file)
reading manifest file 'dlib.egg-info\SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'dlib.egg-info\SOURCES.txt'
installing library code to build\bdist.win-amd64\egg
running install_lib
running build_py
running build_ext
Invoking CMake setup: 'cmake C:\Users\Mouhsine\Desktop\DeepLearning and SVM\dlib-master\tools\python
-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=C:\Users\Mouhsine\Desktop\DeepLearning and SVM\dlib-master\build\l
ib.win-amd64-3.5 -DPYTHON_EXECUTABLE=D:\Python35\python.exe -DCMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE
=C:\Users\Mouhsine\Desktop\DeepLearning and SVM\dlib-master\build\lib.win-amd64-3.5 -A x64'
-- pybind11 v2.2.2
-- Using CMake version: 3.11.0-rc4
-- NOTE: Visual Studio didn't have good enough C++11 support until Visual Studio 2015 update 3 (v19.
0.24210.0)
-- So we aren't enabling things that require full C++11 support (e.g. the deep learning tools).
-- Also, be aware that Visual Studio's version naming is confusing, in particular, there are multipl
e versions of 'update 3'
-- So if you are getting this message you need to update to the newer version of Visual Studio to us
e full C++11.
-- Enabling SSE4 instructions
-- C++11 activated.
CMake Error at CMakeLists.txt:31 (message):
You have to use a version of Visual Studio that supports C++11. As of
December 2017, the only versions that have good enough C++11 support to
compile the dlib Pyhton API is a fully updated Visual Studio 2015 or a
fully updated Visual Studio 2017. Older versions of either of these
compilers have bad C++11 support and will fail to compile the Python
extension. ***SO UPDATE YOUR VISUAL STUDIO TO MAKE THIS ERROR GO AWAY***
what should I do for my case
In my case,I have updated visual studio 2015 to update3, and I found version is 14.0.25431 ,not v19.0.24210.0.So I changed
\dlib\cmake_utils\set_compiler_specific_options.cmake file
, and edited
elseif(MSVC AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.0.24210.0 )
to
elseif(MSVC AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 14.0.24210.0 )
then everything is OK.

Facing ImportError: DLL load failed while implementing Microsoft azure iothub_service_client

I am trying to develop a python console application that implement IoT using Microsoft azure. For this purpose, I am following very basic tutorial made for python developers by Microsoft azure in my Windows 10 machine. Pre-installed Visual C++ redistributable package is one of the most important requirement to allow the use of native DLLs from Python among 4 prerequisites described into the Introduction section of the tutorial.
My system configurations:
Software Version
-------------------------------------------------------
Python: 3.5.2
Visual C++ redistributable package: 2010, 2013, 2017
Node: 6.10.2
Figure of Visual C++ redistributable package:
Problems:
Visual C++ redistributable package is not installed since Visual C++ redistributable package in the tutorial is an older version (2015) then mine (2017).
It shows following error:
Traceback (most recent call last):
File "CreateDeviceIdentity.py", line 2, in <module>
import iothub_service_client
File "F:\Settings\Windows\ProgramFiles\Python\lib\site-packages\iothub_service_client\__init__.py", line 1, in <module>
from .iothub_service_client import *
ImportError: DLL load failed: The specified module could not be found.
Question:
How how can I solve this problem?
N.B: I have completed those basic tutorial provided for Java and NodeJS developers.
I tried to reproduce your issue successfully, and I made the code import iothub_service_client works after installed Visual C++ Redistributable for Visual Studio 2015. So please install the 2015 version on your machine to resolve it, as the tutorial said,
If you are using Windows OS, then Visual C++ redistributable package to allow the use of native DLLs from Python.
The link in the tutorial is for the 2015 verison.

Categories

Resources