2013-04-26 2 views
1

J'essaie de créer un exécutable à partir de mon script python. Mon script fonctionne très bien, mais après le gel, en commençant le .exe me donne l'erreur suivante:cx_freeze et scipy: "ImportError: impossible d'importer le nom vode"

http://www.bild.me/bild.php?file=4663406scipyerror.png

J'utilise Python 3.2.3, Scipy 0.12.0b1, Numpy 1.7.0 et Matplotlib 1.2. 0 (tous les 32 bits).

Des idées/conseils sur la façon de résoudre ce problème? Je suppose que je dois inclure quelque chose manuellement dans mon script de congélation, mais je suis à court de suppositions :-(

Je l'ai enfin à travailler, mais je suis très satisfait de ma solution:

1) copier _odepack.pyd et odepack.py de l'emballage SciPy à mon dossier de programme

2) en odepack.py changement from . import _odepack-import _odepack (autrement ValueError: Attempted relative import in non-package est élevée)

3) dans mon principal changement from scipy.integrate import odeint à from odepack import odeint

Maintenant, il fonctionne comme prévu et après l'utilisation cx_freeze il fonctionne toujours.
encore obtenu aucune idée pourquoi cela ne fonctionnerait pas avant :-(

Merci ThomasK pour me pousser dans la bonne direction bien :-)

+0

Quelle est la ligne 25 de votre script? Dans quelle forme se trouve le module vode, et pouvez-vous le trouver n'importe où dans le répertoire de construction? Utilisez-vous définitivement la dernière version de cx_Freeze? –

+0

@ThomasK La ligne 25 est l'importation 'de scipy.integrate import odeint'. Dans le répertoire de construction, il y a scipy.integrate._odepack.pyd, qui est copié depuis le dossier scipy/integrate. J'utilise cx_freeze 4.3.1, qui semble être la version la plus récente. – Peter

+0

Mais il n'y a pas de fichier 'scipy.integrate.vode.pyd'? Y a-t-il un fichier 'vode.pyd' sur votre système? Si c'est le cas, essayez de le copier à côté de l'exe. –

Répondre

2

J'ai finalement eu autour de cette vode-problème en spécifiant « scipy.integrate .vode "en tant qu'inclure dans le fichier d'installation cx. Cela a abouti à un fichier "scipy.integrate.vode.pyd" pour se retrouver dans le dossier de construction. J'utilise SciPy 0.11, Python 3.2.3 et le dernier cx sur Windows. Mais l'ajout manuel d'un tel fichier "scipy.integrate.vode" dans le dossier de construction ne résoudrait pas non plus le problème, même si de telles corrections manuelles étaient nécessaires pour beaucoup d'autres fichiers .pyd que cx ne trouvait pas. soit (et dans lequel le setup.py ci-dessus comprennent solution ne fonctionnerait pas à la place) ...

Merci de partager votre détresse et la sagesse, n'aurait pas réussi à geler mon Otherwize programme ...

Questions connexes