Ich habe kürzlich von Winpython Version 3.5 auf die entsprechende Version mit Python 3.6 aktualisiert. Daher muss ich meine C-Erweiterungen mit dem neuen Interpreter neu kompilieren. Mein Setup-Skript sieht wie folgt aus:Distutils rufen "link.exe" nicht auf, wenn Sie WinPython 3.6 verwenden, aber mit WinPython 3.5 funktioniert es
from distutils.core import setup, Extension
import numpy.distutils.misc_util
c_ext = Extension("heapoperations", ["heapoperations.c"])
setup(
ext_modules=[c_ext],
include_dirs=numpy.distutils.misc_util.get_numpy_include_dirs(),
)
Die Konsole ausgegeben, wenn Python mit 3,5
running build_ext
No module named 'numpy.distutils._msvccompiler' in numpy.distutils; trying from distutils
building 'heapoperations' extension
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -I"C:\Program Files\WinPython-64bit-3.5.1.2\python-3.5.1.amd64\lib\site-packages\numpy\core\include" -I"C:\Program Files\WinPython-64bit-3.5.1.2\python-3.5.1.amd64\include" -I"C:\Program Files\WinPython-64bit-3.5.1.2\python-3.5.1.amd64\include" -I"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\shared" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\winrt" /Tcheapoperations.c /Fobuild\temp.win-amd64-3.5\Release\heapoperations.obj
Found executable C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\cl.exe
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\link.exe /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:"C:\Program Files\WinPython-64bit-3.5.1.2\python-3.5.1.amd64\libs" /LIBPATH:"C:\Program Files\WinPython-64bit-3.5.1.2\python-3.5.1.amd64\PCbuild\amd64" /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\LIB\amd64" /LIBPATH:"C:\Program Files (x86)\Windows Kits\10\lib\10.0.10240.0\ucrt\x64" /LIBPATH:"C:\Program Files (x86)\Windows Kits\10\lib\10.0.10240.0\um\x64" /EXPORT:PyInit_heapoperations build\temp.win-amd64-3.5\Release\heapoperations.obj /OUT:D:\MyProject\heapoperations.cp35-win_amd64.pyd /IMPLIB:build\temp.win-amd64-3.5\Release\heapoperations.cp35-win_amd64.lib
Found executable C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\link.exe
jedoch war, als ich das gleiche Skript mit Python laufen 3.6 ich
running build_ext
No module named 'numpy.distutils._msvccompiler' in numpy.distutils; trying from distutils
building 'heapoperations' extension
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -I"C:\Program Files\WinPython-64bit-3.6.0.1Qt5\python-3.6.0.amd64\lib\site-packages\numpy\core\include" -I"C:\Program Files\WinPython-64bit-3.6.0.1Qt5\python-3.6.0.amd64\include" -I"C:\Program Files\WinPython-64bit-3.6.0.1Qt5\python-3.6.0.amd64\include" -I"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\shared" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\winrt" /Tcheapoperations.c /Fobuild\temp.win-amd64-3.6\Release\heapoperations.obj
Found executable C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe
That ist, link.exe
wird nicht aufgerufen. Das Ergebnis ist, dass ich keine Datei bekomme, die es mir erlaubt, den Code zu verwenden.
Was könnte das Verhalten erklären? Wie kann ich alles unter WinPython 3.6 arbeiten lassen?
Ich verwende 64bit WinPython unter Windows 10 64bit.
wahrscheinlich nicht die Antwort, aber re- versuche es nachdem ich python._pth umbenannt habe, eine Datei neben python.exe, wie python_nomore._pth – stonebig
@stonebig das habe ich schon gemacht. Es hat keine Auswirkungen auf das Problem. Ich bin mir Ihrer Antwort auf meine vorherige Ausgabe bewusst http://stackoverflow.com/questions/42263962/modulenotfounderror-python-3-6-does-not-find-modules-while-python-3-5-does/42266369? noredirect = 1 # comment71720852_42266369 – Samufi
ok, eine andere dumme Idee ist, dass es einen Grenzeffekt mit zuvor mit Python-3.5-Objekten kompiliert ... vielleicht versuchen, Namen Ihrer Dateien zu ändern, um sicher zu sein, keine "früheren" Objekte auf Ihrem System zu haben ? – stonebig