April 25, 200718 yr Salut, Voilà, je suis bloqué depuis deux jours dans un projet. Simplement : Créer un Package .app exécutant un script Python qui lui-même lance un thttpd compilé et contenu dans le package, plus diverses activités qui concernent pas mon problème. Mon problème est simple, mais impossible de trouver la moindre de piste pour le résoudre : Quand j'execute le code indiqué dans le Info.plist du package, le serveur se lance correctement et le script poursuit donc execution, Quand j'execute le package .app directement, le serveur refuse catégoriquement de se lancer, j'ai d'abord mis en cause le serveur puis blanchi après avoir essayé un shttpd. Au niveau du script Python, j'ai tanté de faire l'appel au serveur par : commands.getoutput os.system En threads distinct ou non. Et dans la syntax de l'appel thttpd, 'nohup' ainsi que rediriger les sorties vers dev/null des fois que ça bloquerait là... Dans tous les cas il refuse, alors qu'un appel direct du script principal fonctionne en ne retournant aucune erreur/warning. def LaunchServer(): os.system('../Resources/sbin/thttpd -p 9519 -d ../Resources/www -u nobody') Voici le code actuel qui appel le serveur, si j'execute ../Resources/sbin/thttpd -p 9519 -d ../Resources/www -u nobody ça fonctionne également. Mon idée est que l'utilisation d'un .app implique des restrictions, mais je ne vois exactement lesquels Merci pour votre aide ! EDIT: Extraits de code : Infos.plist <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleDevelopmentRegion</key> <string>English</string> <key>CFBundleDocumentTypes</key> <array> <dict> <key>CFBundleTypeOSTypes</key> <array> <string>****</string> <string>fold</string> <string>disk</string> </array> <key>CFBundleTypeRole</key> <string>Viewer</string> </dict> </array> <key>CFBundleExecutable</key> <string>Gribouille.py</string> <key>CFBundleIconFile</key> <string>mainlogo.icns</string> <key>CFBundleIdentifier</key> <string>Gribouille</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleName</key> <string>Gribouille</string> <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleSignature</key> <string>????</string> </dict> </plist> Code de Gribouille.py #!/usr/bin/env python # Closed source, written by Julien ARNAUD. # Importing class and files import commands import threading import sys import os # Defining function for launching vital processes def LaunchServer(): os.system('../Resources/sbin/thttpd -p 9519 -d ../Resources/www -u nobody') # Defining threads for functions server = threading.Thread(None, LaunchServer, None) # LaunchServer() # Launching threads server.start() # Print back returned code #print server_code # Exites the script # sys.exit(general_code) Edited April 25, 200718 yr by G r i b o u i l l e
April 25, 200718 yr Arf ! Suis pas développeur mais j'espère que tu trouveras réponse à ta question !!
April 26, 200718 yr Merci, j'éspère aussi Pour le moment je n'ai toujours pas avancé... Toute aide est la bienvenue
April 26, 200718 yr question stupide, ca fait quoi si tu lances un truc super simple en leiu et place de ton serveur? Même problème?
April 27, 200718 yr Bonne question, un peu plus loins dans le script .py il y'a un "open /Applications/Safari http://..." Et lui fonctionne ! Par contre si je tante de lancer un shttpd, thttpd, ou httpd il refuse... À cause du package, mais pourquoi...?
Archived
This topic is now archived and is closed to further replies.