J'ai compilé un simple module C de monde de Bonjour pour Python et il fonctionne correctement dans tout ce que j'ai essayé mais IDLE. Voici ce que je tape à tester:Pourquoi mon module Python C 'hello world' fonctionne-t-il correctement dans tout sauf dans IDLE?
>>> import hello
>>> hello.say_hello('Justin')
Je l'ai essayé en utilisant Python à partir de l'invite de commande (j'utilise Windows), dans PyDev d'Eclipse, et avec PieDream et ils ont tous imprimer sur Hello Justin!
. Cependant, dans IDLE, il n'imprime rien - il me donne juste l'invite.
Le module et setup.py
que j'utilise sont de this page. Je pense que le problème est avec le compilateur. J'utilise MinGW que j'ai défini comme compilateur pour distutils dans un fichier .cfg. Je construis le module à partir de l'invite de commande avec:
python setup.py build
et obtenir
running build
running build_ext
building 'hello' extension
creating build
creating build\temp.win32-2.6
creating build\temp.win32-2.6\Release
C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -IC:\Python26\include -IC:\Python26\PC -c hellomodule.c -o build\temp.win32-2.6\Release\hellomodule.o
writing build\temp.win32-2.6\Release\hello.def
creating build\lib.win32-2.6
C:\MinGW\bin\gcc.exe -mno-cygwin -shared -s build\temp.win32-2.6\Release\hellomodule.o build\temp.win32-2.6\Release\hello.def -LC:\Python26\libs -LC:Python26\PCbuild -lpython26 -lmsvcr90 -o build\lib.win32-2.6\hello.pyd
Je pense que cela pourrait avoir quelque chose à voir avec la partie -mno-Cygwin là-dedans, mais je Je ne suis pas sûr.
Des idées ou des suggestions sur les raisons pour lesquelles ce module ne fonctionnera pas dans IDLE? Dois-je utiliser un compilateur différent?
Ceci est juste une supposition, mais n'êtes-vous pas censé utiliser MSVC++ dans Windows pour Python? – Javier
@javier Vous devriez pouvoir utiliser n'importe quel compilateur c. En note, j'ai suivi le tutoriel sous linux avec gcc, et idle fait la même chose: pas de sortie, mais la ligne cmd fonctionne, etc. Ok, je viens de remarquer ceci: si vous êtes inactif depuis la ligne de commande et exécutez le script , la sortie est déversée dans la fenêtre du terminal. – zdav
@Javier J'ai aussi essayé d'utiliser distutils avec MSVC++ et j'ai obtenu le même résultat. –