Cython Компиляция PYX-файла в PYD с использованием Distutils выдает ошибку: cl.exe не найден

Я пытаюсь скомпилировать файл PYX (Acc_Prototype.pyx) в модуль PYD, используя distutils (то есть у меня есть файл setup.py для этого):

#setup.py
from distutils.core import setup
from Cython.Build import cythonize

from distutils.extension import Extension
ext_modules = [
Extension(
          "Acceleration",
          ["Acc_Prototype.pyx"],
          extra_compile_args=['/openmp'],
          extra_link_args=['/openmp'],
         )
        ]

setup(name='acceleration-parallel',ext_modules=cythonize(ext_modules))

Когда я бегу в терминале:

python setup.py build_ext -i

Я получаю следующую ошибку (cl.exe не найден):

running build_ext
building 'Acceleration' extension
cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD - 
IC:\Users\alomir\Desktop\FD_SPH\venv\include - 
IC:\ProgramData\Anaconda3\include -IC:\ProgramData\Anaconda3\include "
-IC:\Program Files (x86)\Microsoft Visual 
Studio\2017\Community\VC\Tools\MSVC\14.15.26726\ATLMFC\include" "-IC:\Program 
Files (x86)\Microsoft Visual Studio\2017
\Community\VC\Tools\MSVC\14.15.26726\include" "-IC:\Program Files 
(x86)\Windows Kits\NETFXSDK\4.6.1\include\um" "-IC:\Program Files 
(x86)\Windows Kits\10\include\10.0.17134.0\ucrt" "-IC:\Program Files 
(x86)\Windows Kits\10\include\10.0.17134.0\shared" "-IC:\Program Files 
(x86)\Windows Kits\10\include\10.0.17134.0\um" "-IC:\Program Files 
(x86)\Windows Kits\10\include\10.0.17134.0\winrt" "-IC:\Program Files 
(x86)\Windows Kits\10\include\10.0.17134.0\cppwinrt" /TcAcc_Prototype.c
/Fobuild\temp.win-amd64-3.6\Release\Acc_Prototype.obj /openmp
error: command 'cl.exe' failed: No such file or directory

Когда я использую этот же PYX-файл в своем основном приложении Python, используя PYXIMPORT, у меня нет проблем (он компилируется). Однако теперь мне нужно скомпилировать этот файл с помощью distutil, потому что я пытаюсь использовать параллельные возможности Cython (то есть 'prange', 'nogil' и т. Д.), И в соответствии с документацией Cython, я должен сделать это через установочный файл, используя Distutils.

Я прочитал множество тем, но ни одна из них не помогла: попытался добавить путь к cl.exe в мою системную PATH и USERPATH, как предложили большинство потоков, попытался обновить, изменить, переустановить и поиграть с Visual Studio 2017 и т. Д. Ничего действительно не сработало.

Любая помощь с тем, как я могу решить эту проблему? Я действительно нуждаюсь в улучшении производительности моего кода, используя некоторые параллельные функции, и это самый простой способ сделать это, так как я не обладаю знаниями в CS, кроме как с чистым пользователем Python и Cython.

Некоторая другая информация, которая может иметь отношение к моей проблеме:

Computer: DELL XPS15 9560 Signature Edition (2017)
OS: Windows 10 Home 64 bit, version 1803, Build 17134.254
Python (sys.version): 3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 10:22:32) 
  [MSC v.1900 64 bit (AMD64)]
Cython version: 0.28.3
Microsoft Visual Studio Community 2017:
  Version 15.8.2, 
  VisualStudio.15.Release/15.8.2+28010.2016
  Microsoft .NET Framework, Version 4.7.03056
  Visual C++ 2017   00369-60000-00001-AA538
  Microsoft Visual C++ 2017
  Python 15.8.18201.1

Я также делаю все через среду разработки PyCharm Professional Edition JetBrains,

PyCharm 2018.2.2 (Professional Edition)
Build #PY-182.4129.34, built on August 21, 2018
JRE: 1.8.0_152-release-1248-b8 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0

и использовать локальный venv для запуска моего основного приложения.

Я не специалист по CS, поэтому я был бы признателен за любую помощь, особенно если бы меня обошли мирянином =D. Кроме того, дайте мне знать, если вам нужна дополнительная информация. Огромное спасибо заранее!

0 ответов

Другие вопросы по тегам