Salut,
Si "import" ne fonctionnait pas non seulement çà se saurait mais votre code aurait planté bien plus tôt.
La première chose à vérifier est que la consistance du message d'erreur: s'il ne trouve pas le fichier translations.py dans pyFMM... vérifier s'il y est ou pas ne coûte pas cher mais il n'y a que vous à pouvoir le faire.
L'étape suivante serait de vérifier que l'import fonctionne depuis la console (i.e. hors IDE, hors application).
Une cause probable serait que le répertoire pyFMM dans lequel vous avez construit tout ou partie de l'arborescence de votre application soit en conflit avec le "bon" pyFMM.
- W
Le fichiers translations.py est bien présent comme on peut le voir dans l'impression écran du message d'origine, où dans :
J'ai tenté avec la console sans succés!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 @Ellington:~/Dropbox/Stage/Code_FMM/python_code/pyfmm-read-only$ ls pyFMM/Kernels/ __init__.py translations.py laurent@Ellington:~/Dropbox/Stage/Code_FMM/python_code/pyfmm-read-only$
Si quelqu'un accepte de télécharger le module pour vérifier que ça marche pour lui ce serait super sympas:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 python_code/pyfmm-read-only/pyFMM$ python FastMultipole/fastMultipoleMethod.py Traceback (most recent call last): File "FastMultipole/fastMultipoleMethod.py", line 6, in <module> from pyFMM.Kernels.translations import * ImportError: No module named pyFMM.Kernels.translations
J'ai réalisé:
svn checkout http://pyfmm.googlecode.com/svn/trunk/ pyfmm-read-only sur http://code.google.com/p/pyfmm/wiki/HowToPyFMM
ce qui m' a créé un dossier pyfmm-read-only avec tous les fihiers. Puis j'ai ouvert python (avec spyder) et tenté de lancer translatins.py (pas de pbm), quadtree.py (pas de pbm) mais pour mais pour FastMultipoleMethod.py ça nefonctionne pas...
Ah je crois que c'est une histoire de variable d'environnement:
Si quelqu'un peut m' expliquer.. (je suis débutant en informatique donc avec des mots simples)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 After downloading (and extracting) the latest version of the code, you need to add the folder of the package to the PYTHONPATH system variable, e.g.: Let suppose that the final folder is /Users/user/pyFMMv1.X.X export PYTHONPATH=${PYTHONPATH}:/Users/user/pyFMMv1.X.X
Salut,
Ça n'a rien de compliqué, ton script ne peut importer que ce qu'il trouve dans le dossier où il se trouve et ses sous-dossiers. Ceux-ci ayant un fichier __init__.py comme ce semble être ton cas.
Mais en aucun cas Python ne remontera dans l'arborescence des dossiers pour rechercher ce que tu demandes.
Tu peux donc, à cette fin, ajouter un (des) chemin(s) avec sys.path.append('mon/chemin') mais la meilleure solution sera toujours que le script qui lance l'application soit dans le dossier root de celle-ci.
Merci j'ai essayé ta secode méthode (ie) de déplacer les dossier Kernels et DataStructure dans le dossier FastMultipole et c'est nickel!
Je ne comprends pas certaines parties de code, par exemple:
fac = lambda n: [1, 0] [n > 0] or fac(n - 1) * n
Qu'est ce que ça fait ? J'ai une fonction 'fa' qui n'est pas définit par la procdure habituelle mais utilise le mot clé lambda. J'imagine que le code signifie
* le "n:" signifie 'à n j'associe'
*"[1, 0] [n > 0]" là je ne capte pas (même si je m dute que ca traite les cas 0 et 1)
* "or fac(n - 1) * n" : definition recursive
Partager