Précédent   Forum du club des développeurs et IT Pro > Autres langages > Python & Zope > Réseau/Web
Réseau/Web Forum d'entraide sur Python et le réseau/Web
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 07/11/2009, 19h42   #1
lofti_213
Invité de passage
 
Inscription : janvier 2009
Messages : 3
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 3
Points : 0
Points : 0
Par défaut Karrigell et les import

bonjour,j'ai installé le framework Karrigell, cité dans le tutorial Apprendre a programmer en Python,
mais les codes que je peux les executer en ligne de commande,m'affiche des erreurs

voila ce code:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import mapnik
 
m = mapnik.Map(600,300,"+proj=latlong +datum=WGS84")
m.background = mapnik.Color('steelblue')
s = mapnik.Style()
r=mapnik.Rule()
r.symbols.append(mapnik.PolygonSymbolizer(mapnik.Color('#f2eff9')))
r.symbols.append(mapnik.LineSymbolizer(mapnik.Color('rgb(50%,50%,50%)'),0.1))
s.rules.append(r)
m.append_style('My Style',s)
lyr = mapnik.Layer('world',"+proj=latlong +datum=WGS84")
lyr.datasource = mapnik.Shapefile(file='C:\TM_WORLD_BORDERS-0.2\TM_WORLD_BORDERS-0.2.shp')
lyr.styles.append('My Style')
m.layers.append(lyr)
m.zoom_to_box(lyr.envelope())
mapnik.render_to_file(m,'world.png', 'png')
print "done..."
il m'affiche cette erreur:

Code :
1
2
3
4
5
6
7
8
9
10
Error in /py/1.py
Line 2    
import mapnik
ImportError: No module named mapnik
 
Traceback (most recent call last):
  File "C:\Program Files\Karrigell-3.0.2\karrigell\core\HTTP.py", line 335, in process_request
  File "C:\Program Files\Karrigell-3.0.2\karrigell\core\k_target.py", line 387, in run
  File "", line 2, in 
ImportError: No module named mapnik
merci d'avance
lofti_213 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2009, 23h07   #2
fred1599
Membre Expert
 
Avatar de fred1599
 
Homme Fred
Enseignant
Inscription : juillet 2006
Messages : 1 303
Détails du profil
Informations personnelles :
Nom : Homme Fred
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : juillet 2006
Messages : 1 303
Points : 1 795
Points : 1 795
Si on considère que tu as bien mapnik , je supposerais un probleme de path.

As-tu suivi l'installation de mapnik correctement? Des messages d'erreur sont expliqués, à voir.

Si tu es sous windows va voir ici, il t'explique les messages d'erreur possibles dont la tienne.

Bon courage!
__________________
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
fred1599 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2009, 15h08   #3
kervarker
Candidat au titre de Membre du Club
 
Pierre Quentel
Inscription : novembre 2009
Messages : 10
Détails du profil
Informations personnelles :
Nom : Pierre Quentel

Informations forums :
Inscription : novembre 2009
Messages : 10
Points : 11
Points : 11
Par défaut Imports dans Karrigell

Bonjour,

Les imports posent toujours des problèmes dans des environnements partagés comme les serveurs web, chaque utilisateur pouvant modifier sys.path

Depuis la version 3.0, Karrigell résoud ce problème en distinguant deux cas :

- les modules de la distribution standard, ou ceux qui sont dans le répertoire karrigell/package : on peut les importer par le classique "import foo"

- les modules définis par l'utilisateur : il faut utiliser la fonction Import en passant en argument l'url du module :

foo = Import('chemin/du/module/foo.py')

C'est expliqué en détail dans la doc

Pierre
kervarker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2012, 02h27   #4
pieral85
Candidat au titre de Membre du Club
 
Pierre Alaime
Inscription : janvier 2011
Messages : 23
Détails du profil
Informations personnelles :
Nom : Pierre Alaime

Informations forums :
Inscription : janvier 2011
Messages : 23
Points : 11
Points : 11
Bonjour,

Je n'ai pas de problème pour importer un module de la distribution standard ("random" s'importe par exemple très bien) sauf concernant Tkinter... Une partie du message d'erreur est la suivante:

Code :
ImportError: No module named Tkinter
Quelqu'un aurait-il la solution?

Merci d'avance.
pieral85 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2012, 18h13   #5
kervarker
Candidat au titre de Membre du Club
 
Pierre Quentel
Inscription : novembre 2009
Messages : 10
Détails du profil
Informations personnelles :
Nom : Pierre Quentel

Informations forums :
Inscription : novembre 2009
Messages : 10
Points : 11
Points : 11
Cf la discussion dans le forum Tkinter : le problème vient du fait que tu utilises l'application Karrigell.exe, créée avec py2exe. Dans cette application les scripts sont exécutés par un interpréteur qui n'intègre que les modules utilisés dans le package Karrigell, ce qui inclut random mais pas Tkinter

Pour pouvoir utiliser tous les modules de la distribution standard il faut installer Karrigell à partir de l'archive tar.gz

- Pierre
kervarker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2012, 18h17   #6
wiztricks
Expert Confirmé Sénior
 
Inscription : juin 2008
Messages : 3 690
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 3 690
Points : 4 518
Points : 4 518
Citation:
Envoyé par kervarker Voir le message
Pour pouvoir utiliser tous les modules de la distribution standard il faut installer Karrigell à partir de l'archive tar.gz
Croyez vous que cela rendra tkinter utilisable si lancé depuis un script CGI géré par Karrigell? Ou est ce qu'on aura une erreur juste plus difficile à interpréter?
- W
__________________
Architectures Post-Modernes
wiztricks est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2012, 22h43   #7
kervarker
Candidat au titre de Membre du Club
 
Pierre Quentel
Inscription : novembre 2009
Messages : 10
Détails du profil
Informations personnelles :
Nom : Pierre Quentel

Informations forums :
Inscription : novembre 2009
Messages : 10
Points : 11
Points : 11
Oui, ça marche : mettez ceci dans test_tk.py dans le répertoire www de Karrigell :
Code :
1
2
3
4
5
 
from Tkinter import *
root = Tk()
Label(root,text="essai").pack()
root.mainloop()
et appelez localhost/test_tk.py : ça ouvre bien la fenêtre Tkinter

- Pierre
kervarker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2012, 10h15   #8
wiztricks
Expert Confirmé Sénior
 
Inscription : juin 2008
Messages : 3 690
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 3 690
Points : 4 518
Points : 4 518
Citation:
Envoyé par kervarker Voir le message
et appelez localhost/test_tk.py : ça ouvre bien la fenêtre Tkinter
Dans le navigateur?
- W
__________________
Architectures Post-Modernes
wiztricks est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2012, 11h27   #9
kervarker
Candidat au titre de Membre du Club
 
Pierre Quentel
Inscription : novembre 2009
Messages : 10
Détails du profil
Informations personnelles :
Nom : Pierre Quentel

Informations forums :
Inscription : novembre 2009
Messages : 10
Points : 11
Points : 11
@wiztricks

Drôle de question ! Je détaille :
- on est naturellement en local (navigateur et serveur sur la même machine)
- Karrigell est lancé en ligne de commande : - quand le navigateur appelle la page http://localhost/test_tk.py cela déclenche l'exécution du script par l'interpréteur Python, qui ouvre une fenêtre Tkinter comme il le ferait en exécutant directement ce script par donc évidemment sans aucun lien avec le navigateur

Sur le fond j'ai demandé à pieral85 pourquoi il avait besoin d'ouvrir un GUI depuis un script serveur - ça me semble bizarre comme cas d'usage. Si le serveur est distant cela n'aurait aucun intérêt puisque la fenêtre s'ouvrirait sur la machine distante ; il est d'ailleurs probable que les modules Tkinter sont enlevés des distributions Python sur serveur, ce qui déclencherait (heureusement pour le coup) un ImportError
kervarker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2012, 11h50   #10
wiztricks
Expert Confirmé Sénior
 
Inscription : juin 2008
Messages : 3 690
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 3 690
Points : 4 518
Points : 4 518
Le CGI lancé via le HTTP get induit par http://localhost/test_tk.py s'attend à récupérer du HTML dans un délai raisonnable.

Je ne vois pas comment cela (délai raisonnable) est applicable au lancement d'une application Tk.
Admettons qu'on ait besoin de passer par là pour générer une image "assez vite", pourquoi ne pas passer par un subprocess.call (qui récupère le Python installé côté systeme) plutôt que d'essayer de le faire dans le contexte de la requête HTTP?

- W
PS: en plus c'est un truc ou il va falloir que Tk travaille head less.
__________________
Architectures Post-Modernes
wiztricks est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2012, 12h00   #11
kervarker
Candidat au titre de Membre du Club
 
Pierre Quentel
Inscription : novembre 2009
Messages : 10
Détails du profil
Informations personnelles :
Nom : Pierre Quentel

Informations forums :
Inscription : novembre 2009
Messages : 10
Points : 11
Points : 11
Pendant que la boucle de Tkinter tourne le script Karrigell est suspendu, mais si on fait un "print" puis qu'on détruit la fenêtre, on sort de cette boucle et le résultat apparait bien dans le navigateur (ce qui fait que j'avais d'ailleurs tort de dire qu'il n'y avait aucun lien)

Code :
1
2
3
4
5
6
7
8
9
from Tkinter import *
 
def test():
    print "<b>impression</b> dans le navigateur"
    root.destroy()
 
root = Tk()
Button(root,text="essai",command=test).pack()
root.mainloop()
Encore une fois je suis d'accord que c'est un cas d'usage assez bizarre, mais ça fonctionne
kervarker est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 12h18.


 
 
 
 
Partenaires

Hébergement Web