Visual Express C++ 2010 + CPyhon 2.7 Probleme

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
Antworten
NiklasRosenstein
User
Beiträge: 17
Registriert: Donnerstag 16. Juni 2011, 21:38

Hallo,

ich will mich an das schreiben von Modulen mit C++ für Pyhton heranwagen.
Habe Visual Express 2010 C++ heruntergeladen und installiert.
Ich arbeite auf Windows 7 64 Bit.

So, nun habe ich ein kleines programm geschrieben und auf "Debugging start" gedrückt und das ist was dabei rauskam:

Code: Alles auswählen

#include "C:\Python27\include\Python.h"

int main() {
    return 0;
}

Code: Alles auswählen

// Fehlermeldung vom compiler:
1>------ Erstellen gestartet: Projekt: MyPy, Konfiguration: Debug Win32 ------
1>  main.cpp
1>LINK : fatal error LNK1104: Datei "python27_d.lib" kann nicht geöffnet werden.
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========


Dann habe ich es genau nach dem Tutorial hier versucht. Wenn ich die example.c builden will (wieder auf "Debugging start" nur mit "Release" und nicht "Debug") kommt folgendes:
Bild

Nagut, lass ma das erstmal mit der example.dll, das tutorial besagt auch dass ich die Python source herunterladen soll und da meine projekte drin erstellen soll.

Code: Alles auswählen

#include "C:\Python27_Source\include\Python.h"

int main() {
    return 0;
}

Code: Alles auswählen

// Fehlermeldung vom compiler:
1>------ Erstellen gestartet: Projekt: MyPy, Konfiguration: Debug Win32 ------
1>  main.cpp
1>C:\Users\niklas\Python\C++\Python-2.7.2\Include\Python.h(8): fatal error C1083: Datei (Include) kann nicht geöffnet werden: "pyconfig.h": No such file or directory
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

Ich weiss wirklich nicht weiter, bin ziemlich neu in C++. :K
(Habe nur kentnisse in Java und Python)

Vielen Danke schonmal !!
Niklas
deets

Mal eine Frage vorweg: wenn du so offensichtlich keine Ahnung von C/C++ hast, warum willst du dann was damit machen? Hast du ein konkretes Problem zu loesen?

Wie dem auch sei... Vorrausgeschickt: ich arbeite eigentlich nur mit unixoiden Systemen, darum alles folgende unter Vorbehalt.

Das Problem beim ersten mal ist, dass du eine Debug-Variante bauen willst, aber keine Debug-Variante von Python hast. Das erkennt man an dem _d im DLL-Namen, und das er das nicht findet.

Danach benutzt du eine Source-Installation von Python, aber das geht natuerlich auch nicht - denn die Sourcen von Python sind noch unspezifiziert, und genau darum fehlt die pyconfig.h.

Ich wuerde dir davon abraten, die letztere Variante auszuprobieren, es sei denn ,du hast vorher Python erfolgreich [edit] compiliert.

Ausserdem denke ich ist bei deinem Kenntnisstand eher angeraten sich mit extensions vie Cython oder normalen Distuitils auseinanderzusetzen. Oder geht es dir um das *embedden* von Python? Das ist ein komplett anderes Thema, aber dann - ganz ehrlich - muss man erstmal ein Programm in C++ schreiben koennen, denn worein will man sonst einen Python-Interpreter einbetten?
NiklasRosenstein
User
Beiträge: 17
Registriert: Donnerstag 16. Juni 2011, 21:38

Danke für deine schnelle antwort !
Mal eine Frage vorweg: wenn du so offensichtlich keine Ahnung von C/C++ hast, warum willst du dann was damit machen? Hast du ein konkretes Problem zu loesen?
Ja, ich habe eine Partikelsimulation in Python geschrieben, allerdings nicht seh rzu gebrauchen wegen pythons performance. Ich möchte sie in C++ schreiben.
Das Problem beim ersten mal ist, dass du eine Debug-Variante bauen willst, aber keine Debug-Variante von Python hast. Das erkennt man an dem _d im DLL-Namen, und das er das nicht findet.
Und wo bekomme ich diese Debug Version her ? :? Wenn ich die Release - Variante bauen will kommt glaube ich der gleiche Fehler. (Kanns grad nicht testen)
Ausserdem denke ich ist bei deinem Kenntnisstand eher angeraten sich mit extensions vie Cython oder normalen Distuitils auseinanderzusetzen.
Nuja, n paar klassen hab ich schon geschrieben für die Partikelsimulation, welche die nicht im Modul enthalten sein sollen. Also bissl C++ schreiben kann ich scho, aber von kompilieren hab ich keinen plan :shock:
Cython habe ich auch schon versucht zu installieren, hab mir dazu den mingw compiler runtergeladen aber beim installieren kommt immer vcvarsall.bat nicht gefunden oder so und dann hab cihs aufgegeben. Is ja jetz auch ein anderes Thema.
Oder geht es dir um das *embedden* von Python?
Nee , aber das soll später mal kommen. :mrgreen:

Danke,
Niklas
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.
NiklasRosenstein hat geschrieben:Nuja, n paar klassen hab ich schon geschrieben für die Partikelsimulation, welche die nicht im Modul enthalten sein sollen. Also bissl C++ schreiben kann ich scho, aber von kompilieren hab ich keinen plan :shock:
Du kannst C++ programmieren aber kannst nicht kompilieren? Ich bin gespannt, wie du uns das erklären kannst ;-)

Ich würde an deiner Stelle versuchen erstmal Cython oder Psyco zum Laufen zu bringen. Damit sparst du dir den ganz Portierungsaufwand und bist vielleicht bereits ausreichend schnell. Ansonsten hilft natürlich auch immer scipy.

Sebastian
Das Leben ist wie ein Tennisball.
BlackJack

@NiklasRosenstein: Wenn es die Debug-Version von Python nicht fertig kompiliert irgendwo zum herunterladen gibt, dann müsstest Du Dir die selber übersetzen.

Cython mag ein anderes Thema sein, aber ich würde auch eher den Weg einschlagen als C++ zu verwenden. Und wenn schon C++ dann trotzdem noch Cython um die Anbindung an Python einfacher zu gestalten.

Dazu muss ich vielleicht sagen, dass ich C++ nicht mag und auch nicht wirklich damit klar komme. Das ist IMHO eine viel zu komplizierte Sprache — und zwar *unnötig* kompliziert. Ich würde bei Geschwindigkeitsproblemen eher auf C ausweichen und das mit `ctypes` anbinden, oder Cython verwenden.
deets

NiklasRosenstein hat geschrieben: Cython habe ich auch schon versucht zu installieren, hab mir dazu den mingw compiler runtergeladen aber beim installieren kommt immer vcvarsall.bat nicht gefunden oder so und dann hab cihs aufgegeben. Is ja jetz auch ein anderes Thema.
Ich wuerde dir das aber trotzdem raten, denn es ist gerade bei deinem Kenntnisstand der einfachste Weg, Python performanter zu machen. UU ist deine Partikelsimulation einfach genug zu portieren, und dann schon ausreichend schnell. Und selbst wenn du sie nochmal explizit als C/C++-Bibliothek schreiben willst, dann kannst du sie damit anbinden.
NiklasRosenstein
User
Beiträge: 17
Registriert: Donnerstag 16. Juni 2011, 21:38

Habe es geschafft Cython zu installieren (nachdem ich zu Pyx86 gewechselt bin.). Funktioniert jetzt 1A ! Danke ;)
Nuby
User
Beiträge: 8
Registriert: Donnerstag 19. Juli 2012, 15:13

EyDu hat geschrieben:Hallo.
NiklasRosenstein hat geschrieben:Nuja, n paar klassen hab ich schon geschrieben für die Partikelsimulation, welche die nicht im Modul enthalten sein sollen. Also bissl C++ schreiben kann ich scho, aber von kompilieren hab ich keinen plan :shock:
Du kannst C++ programmieren aber kannst nicht kompilieren? Ich bin gespannt, wie du uns das erklären kannst ;-)
Das ist eine berechtigte Frage ^^

Ohne Komplieren geht es doch gar nicht. Oder hat das jemand anderes für dich gemacht? ^^
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Immerhin hat Nuby bewiesen dass er graben kann, mindestens ein Jahr tief graben.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Vielleicht ist er auf Schatzsuche.
Das Leben ist wie ein Tennisball.
lunar

@Leonidas: Auf Gold ist er dabei allerdings nicht gestoßen ;)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dafür auf "CPyhon", ist doch auch schon was.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
lunar

@Leonidas: Uhhh, ist das etwa wertvoll?
BlackJack

@lunar: Jup, das ist ein ganz seltener Fehldruck — Sammler zahlen dafür ein Vermögen. :-D
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Phyton soll da auch sehr beliebt sein! :mrgreen:
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
BlackJack

@Hyperion: Diese Fälschung ist nicht viel Wert — das ist Massenware die einem ziemlich häufig unter kommt wenn man nicht aufpasst. :-)
Antworten