Kompilieren von Cython mit MinGW – undefined Referenz PyExc

Ich versuche, ein einfaches Code-Snippet aus dem Buch "Cython – Ein Leitfaden für Python-Programmierer" zu kompilieren, und wenn ich kompiliere, bekomme ich folgende Fehlermeldung:

H:\Cython>python setup.py build_ext -i --compiler=mingw32 running build_ext building 'fib' extension C:\MinGW\bin\gcc.exe -mdll -O -Wall -IC:\Anaconda3\include -IC:\Anaconda3\include -c fib.c -o build\temp.win32-3.4\Release\fib.o writing build\temp.win32-3.4\Release\fib.def C:\MinGW\bin\gcc.exe -shared -s build\temp.win32-3.4\Release\fib.o build\temp.win32-3.4\Release\fib.def -LC:\Anaconda3\libs -LC:\Ana conda3\PCbuild -lpython34 -lmsvcr100 -o H:\Cython\fib.pyd build\temp.win32-3.4\Release\fib.o:fib.c:(.text+0xb6): undefined reference to `_imp__PyExc_TypeError' build\temp.win32-3.4\Release\fib.o:fib.c:(.text+0xf3): undefined reference to `_imp__PyExc_TypeError' build\temp.win32-3.4\Release\fib.o:fib.c:(.text+0x3cc): undefined reference to `_imp___PyThreadState_Current' build\temp.win32-3.4\Release\fib.o:fib.c:(.text+0x857): undefined reference to `_imp__PyExc_NameError' build\temp.win32-3.4\Release\fib.o:fib.c:(.text+0xa55): undefined reference to `_imp__PyExc_ImportError' c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: build\temp.win32-3.4\Release\fib.o: bad reloc address 0x0 in s ection `.data' collect2.exe: error: ld returned 1 exit status error: command 'C:\\MinGW\\bin\\gcc.exe' failed with exit status 1 H:\Cython> 

Setup.py:

 from distutils.core import setup from Cython.Build import cythonize setup(ext_modules=cythonize('fib.pyx')) 

Fib.pyx:

 def fib(int n): cdef int i cdef double a=0.0, b=1.0 for i in range(n): a, b = a + b, a return a 

Wenn ich dieses Problem habe, haben andere, die den Fehler gehabt haben, eine Mischung zwischen 32 und 64 Bit Zeug, das mache ich nicht.

  • Längste aufeinanderfolgende Sequenz in einem unsortierten Array [duplizieren]
  • Lazy transform in C ++
  • Wie überschneide ich die automatisch erstellten docstring Daten für Boost :: Python?
  • Musik sortieren
  • Rufen Sie Python von C ++ an
  • Warum ist Matrix Multiplikation schneller mit numpy als mit Ctypes in Python?
  • One Solution collect form web for “Kompilieren von Cython mit MinGW – undefined Referenz PyExc”

    Ich setzte mich und sah die Fehler wieder über heute und fand das Problem. Das Problem ist, dass ich Anaconda verwendet habe, anstatt alles von Grund auf neu zu kompilieren – das bedeutet, dass einige Cython-Komponenten mit MSVC kompiliert wurden. Wie oben kann man sehen, dass ich versuche, MinGW zu verwenden, um das Cython-Test-Skript zu kompilieren. Warum das Mischen von Compilern wie das nicht funktioniert, liegt außerhalb meines Wissensumfangs, aber das geht nicht. Kompilieren meiner Cython-Test-Skripte mit MSVC-Arbeiten.
    (Verwenden Sie Visual Studio C ++ 2008/2010 für python 2.x / 3.x)

    Als der Grund, dass ich versucht habe, MinGW (gegen Standardempfehlung) zu benutzen, war, dass mein msiserver Service irgendwie gebrochen war (ich bin auf einem alten Laptop, also erinnere ich mich nicht an den Grund) und hoffte, einen schnellen Weg zu finden Out, anstatt die msiserver Service zu beheben.

    Das Update für den msiserver Service ist hübsche Unvereinbarkeit mit dieser Frage, aber es war ziemlich schwer zu finden, also dachte ich, dass ich es verknüpfen und spiegeln würde:

    http://www.vistax64.com/vista-installation-setup/96680-repair-windows-installer-service-vista-all-versions.html

    Für all die unglücklichen Seelen suchen und Googeln für wie man den Windows Installer Service zu reparieren, habe ich einige Infos für Sie. Vor ein paar Tagen habe ich versucht, eine meiner Apps zu deinstallieren und auf einen Fehler gestoppt zu haben "Windows Installer Service kann nicht zugegriffen werden". Nach vielen Versuchen und Fehlern, die versuchen, dieses Problem zu beheben, stolperte ich auf ein neues Update für dieses Problem, das in all diesen Situationen gearbeitet hat, in denen der Windows Installer Service nicht manuell starten und in Substanz, nicht erlauben Installieren oder Deinstallieren von Aufgaben zu vervollständigen.

    Hier sind die einfachen Schritte:

     1. Go to a Windows Vista (Any Version) computer that has the Windows Installer service running correctly and run regedit(Start-Run-Regedit) 2. Go to the location HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\msiserver 3. Right click on this key and select "Export" and save the key to a Flash Drive or other. 4. Run sfc /scannow on the damaged Vista computer - you won't need the install disk as it goes to backup files on your HD. Do not reboot when complete 5. Double click saved .reg file from working machine and import registry settings into damaged Vista computer. 6. Now reboot and try to install/uninstall 

    Wenn viele von euch Erfolg mit dieser Methode haben, bitte posten Sie dieses Update um das WWW, als ich über 1000 Links mit Benutzern mit dem gleichen Problem und nicht in der Lage, es zu lösen ging. Schande über Microsoft, sehr schlampig. Es wäre so schön gewesen, wenn Microsoft Windows Installer 4.0 als eigenständige Installation mit der Version von Vista veröffentlicht hat, also hätte ich es reparieren können, haben die meisten Benutzer frische Installationen gemacht, um dies zu beheben. Holen Sie sich Ihre Handlung zusammen Microsoft !!!!

    Die Katze

    Danke, die Katze.

    Python ist die beste Programmiersprache der Welt.