Bonjour a tous, cela fait plusieurs heures de recherches sur google que je tente de résoudre ce problème:
Le but est de mettre mon petit jeu, fait avec pysfml, en .exe, j'utilise cx_freeze, et j'obtiens ceci
D:\Programmation\Python\Python\build\exe.win32-3.2>main.exe
Traceback (most recent call last):
File "D:\Programmation\Python\Python\lib\site-packages\cx_Freeze\initscripts\Console3.py", line 27, in <module>
exec(code, m.__dict__)
File "main.py", line 3, in <module>
File "D:\Programmation\Python\Python\session.py", line 3, in <module>
from etage import *
File "D:\Programmation\Python\Python\etage.py", line 3, in <module>
from joueur import *
File "D:\Programmation\Python\Python\joueur.py", line 3, in <module>
from attaques import *
File "D:\Programmation\Python\Python\attaques.py", line 3, in <module>
from menu import *
File "D:\Programmation\Python\Python\menu.py", line 3, in <module>
from fonctions_recurrentes import *
File "D:\Programmation\Python\Python\fonctions_recurrentes.py", line 3, in <module>
import sfml as sf
File "D:\Programmation\Python\Python\lib\site-packages\sfml\__init__.py", line 13, in <module>
from sfml.graphics import *
File "ExtensionLoader_sfml_graphics.py", line 22, in <module>
File "ExtensionLoader_sfml_graphics.py", line 14, in __bootstrap__
File "graphics.pxd", line 16, in init sfml.graphics (src/sfml\graphics.cpp:40567)
AttributeError: 'module' object has no attribute 'Rectangle'
Il semblerait qu'il ne trouve pas Rectangle. Alors la question est : qu'est Rectangle ? Où est-ce défini ? Aussi quel binding pour Python utilises-tu ? En regardant rapidement dans pysfml-cython, je n'ai pas trouvé de classe Rectangle mais RectangleShape.
SFML est écrit en C++. Un binding c'est écrire un code qui permettra d'utiliser une librairie avec un autre langage. Dans ce cas-ci, pySFML est un binding pour Python. Comme expliqué sur le site les bindings autre que C et .Net ne sont pas supportés officiellement car développé par la communauté. Il en existe parfois plusieurs. Donc ma question était : quel binding pour SFML as-tu utilisé ? As-tu un lien vers le code source de ce binding ? Si non, comment l'as-tu installé ?
Le lien d'OldProgrammer est fort intéressant. Mais il n'explique pas le fond du problème. Ce sera pas mal de comprendre ce qui foire. Mais pour ça il faut plus d'info.
Je suis encore plus dans le pâté <.< A cause d'un second bug j'ai voulu réinstaller python et pysfml, sauf que le site python-sfml a disparu (erreur DNS) et j'arrive pas a installer le code github ='C
Bon, alors le binding, c'est le lien que tu m'as envoyé, je suis sur python 3.4, et cx_freeze vient aussi du lien que tu m'as envoyé, donc pysfml remarche, si t'as un truc pour le problème a l'origine de ce post, je suis toujours preneur (en tout cas déjà merci de m'avoir permis de retrouver SFML)
Je viens de regarder dans le fichier .whl et je constate qu'il n'est pas basé sur le dernier commit présent sur GitHub.
Donc je crains que pour pouvoir utiliser correctement cette librairie, tu vas devoir toi-même la compiler. C'est malheureusement une route semée d’embûches.
En y réfléchissant encore, je ne pense finalement pas que compiler la dernière version va résoudre ton problème. Comme j'ai pu voir, la classe Rectangle existe bien dans ta version.
J'essaie chez moi en locale et si je trouve quelque chose, je te le fais savoir. Mais je pense que c'est plutôt la manière dont cx_Freeze place les différents fichiers qui pose problème.
Bon après quelques tests, j'ai pu arriver à faire un exécutable en suivant les instructions du lien donné par OldProgrammer. Il fallait donc bien exclure la librairie sfml du build, et ensuite on la recopier dans le dossier telle quelle. Comme ça fonctionne, et comme on ne veut pas faire ces choses à la main au risque d'oublier d'ici un an comment ça fonctionnait, j'ai ajouté la lib SFML dans le setup.py comme si c'était juste des fichiers à copier.
Voici mon setup.py
import sys
import os.path
from cx_Freeze import setup, Executable
Dependencies are automatically detected, but it might need fine tuning.
Manually copy sfml dir from site-packages into the build dir
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.