Есть ли способ принудительно заставить компилятор для создания расширений Cython при запуске python setup.py install
? Где setup.py
имеет вид:
import os.path
import numpy as np
from setuptools import setup, find_packages, Extension
from Cython.Distutils import build_ext
setup(name='test',
packages=find_packages(),
cmdclass={'build_ext': build_ext},
ext_modules = [ Extension("test.func", ["test/func.pyx"]) ],
include_dirs=[np.get_include()]
)
Я пытаюсь установить пакет на Windows 8.1 x64, используя Anaconda 3.16, Python 3.4, setuptools 18, Numpy 1.9 и Cython 0.24. Развертывание script адаптировано из Cython wiki и этого ответа на переполнение стека.
Makefile.bat
:: create and activate a virtual environement with conda
conda create --yes -n test_env cython setuptools=18 pywin32 libpython numpy=1.9 python=3
call activate test_env
:: activate the MS SDK compiler as explained in the Cython wiki
cd C:\Program Files\Microsoft SDKs\Windows\v7.1\
set MSSdk=1
set DISTUTILS_USE_SDK=1
@call .\Bin\SetEnv /x64 /release
cd C:\test
python setup.py install
Проблема в том, что в этом случае setup.py install
все еще использовался компилятор mingw, включенный в conda вместо MS Windows SDK 7.1.
-
Таким образом,
DISTUTILS_USE_SDK=1
иMSSdk=1
, похоже, не влияют на buid. Я не уверен, что здесь может возникнуть проблема с активацией MS SDK изнутри conda virtualenv. -
Запуск
python setup.py build_ext --compiler=msvc
корректно создает расширение с помощью компилятора MS, но затем запускаетsetup.py install
, снова перекомпилирует его с помощью mingw. То же самое относится кpython setup.py build --compiler=msvc
. -
Также попытался запустить
%COMSPEC% /E:ON /V:ON /K "%PROGRAMFILES%\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd"
, как обсуждалось в ответе, указанном выше, но для меня это вызывает новую подсказку терминала, окрашенную в желтый цвет и останавливает процесс установки.
Есть ли способ заставить компилятор для создания этого пакета, например, отредактировав setup.py
?