Gibt es eine Möglichkeit, den Compiler explizit zum Erstellen von Cython-Erweiterungen zu zwingen, wenn python setup.py install
ausgeführt wird? Verwendung von Anaconda 3.16, Python 3.4, SetuptoolsCompiler erzwingen, wenn Python ausgeführt wird setup.py install
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()]
)
Ich versuche, ein Paket auf Windows 8.1 x64 zu installieren, 18, Numpy 1,9 und Cython 0,24: Wo setup.py
ist von der Form. Das Bereitstellungsskript wurde aus der Cython und this Stack Overflow-Antwort angepasst.
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
Das Problem ist, dass in diesem Fall setup.py install
noch den mingw Compiler mit Conda anstelle des MS Windows SDK 7.1 eines enthalten verwendet.
So ist die
DISTUTILS_USE_SDK=1
undMSSdk=1
scheinen keinen Einfluss auf die buid zu haben. Ich bin mir nicht sicher, ob das Aktivieren des MS SDK aus einem conda virtualenv hier ein Problem sein könnte.Running
python setup.py build_ext --compiler=msvc
erstellt korrekt die Erweiterung mit dem MS-Compiler, aber anschließendsetup.py install
läuft, kompiliert es erneut mit Mingw. Gleiches gilt fürpython setup.py build --compiler=msvc
.Auch versucht,
%COMSPEC% /E:ON /V:ON /K "%PROGRAMFILES%\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd"
ausgeführt, wie in der Antwort oben verknüpft diskutiert, aber für mich erzeugt dies eine neue Terminal-Eingabeaufforderung, gelb markiert, und stoppt den Installationsvorgang.
Gibt es eine Möglichkeit, die Compiler zwingen, dieses Paket für den Aufbau, zum Beispiel durch die setup.py
Bearbeitung?
Versuchen 'python setup.py build_ext --compiler = msvc --force' mit dem Compiler zu zwingen, um das Paket zu bauen/umbauen und sehen, was passiert. – romeric
@romeric Also baut '' build_ext' 'die Erweiterung mit MS VC wie erwartet (sowohl mit als auch ohne das '--force' Flag). Das Problem ist, dass wenn ich dann 'install' starte, wird es mit mingw neu aufgebaut. – rth