Derniers messages sur Zeste de Savoirhttps://zestedesavoir.com/forums/2019-05-18T15:27:32+02:00Les derniers messages parus sur le forum de Zeste de Savoir.Kivy - pyinstaller, message #2034642019-05-18T15:27:32+02:00leir/@leirhttps://zestedesavoir.com/forums/sujet/12515/kivy-pyinstaller/?page=1#p203464<p>Bon, cela fait plusieurs jours que je cherche, je décide de poster une question sur ce forum, et je trouve moi-même la réponse :</p>
<p>Je n’avais pas compris qu’il ne fallait pas tenter de packager le fichier 'store.json' mais le créer à l’extérieur de l’application, grâce à un chemin absolu, comme : </p>
<div class="hljs-code-div"><div class="hljs-line-numbers"><span></span><span></span><span></span><span></span><span></span><span></span></div><pre><code class="hljs language-ruby"><span class="hljs-comment"># main.py</span>
<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">PlanningApp</span>(<span class="hljs-title">App</span>):</span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">build</span><span class="hljs-params">(<span class="hljs-keyword">self</span>)</span></span>:
store = JsonStore(<span class="hljs-string">'/Users/leir/Documents/planning/store.json'</span>)
store.put(<span class="hljs-string">'test'</span>, note=<span class="hljs-string">'test'</span>)
<span class="hljs-keyword">return</span> ScreensManager()
</code></pre></div>
<p>Sujet résolut donc, désolé du dérangement…</p>Kivy - pyinstaller, message #2034592019-05-18T13:55:18+02:00leir/@leirhttps://zestedesavoir.com/forums/sujet/12515/kivy-pyinstaller/?page=1#p203459<p>Bonjour à tous. Depuis quelques semaines, je me suis mis au développement de gui python avec Kivy. J’arrive bien à l’utiliser et j’en suis content. Cependant, j’essaye maintenant de créer un package pour mon application, pour qu’elle soit utilisable facilement sur MacOSX.</p>
<p>Tout va bien tant que je n’ajoute pas à mon application la possibilité d’enregistrer des données, via le JSON storage de Kivy (très simple à utiliser et parfaitement adapté à mes besoins). Si j’ai uniquement de la logique python avec des fichiers .kv, il n’y a aucun problème. L’application est compilée et se lance parfaitement.</p>
<p>Si j’essaie d’ajouter une interaction avec un fichier store.json pour stocker les données utilisateurs, l’application se compile à nouveau sans problème, mais plante systématiquement au démarrage. </p>
<p>J’ai recréé une petite app test pour montrer cela :</p>
<div class="hljs-code-div"><div class="hljs-line-numbers"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></div><pre><code class="hljs language-python"><span class="hljs-comment"># fichier main.py</span>
<span class="hljs-keyword">from</span> kivy.app <span class="hljs-keyword">import</span> App
<span class="hljs-keyword">from</span> kivy.lang <span class="hljs-keyword">import</span> Builder
<span class="hljs-keyword">from</span> kivy.uix.screenmanager <span class="hljs-keyword">import</span> ScreenManager, Screen
<span class="hljs-keyword">from</span> kivy.storage.jsonstore <span class="hljs-keyword">import</span> JsonStore
Builder.load_file(<span class="hljs-string">'screensmanager.kv'</span>)
<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">HomeScreen</span><span class="hljs-params">(Screen)</span>:</span>
<span class="hljs-keyword">pass</span>
<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">IndexScreen</span><span class="hljs-params">(Screen)</span>:</span>
<span class="hljs-keyword">pass</span>
<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">ScreensManager</span><span class="hljs-params">(ScreenManager)</span>:</span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span><span class="hljs-params">(self, **kwargs)</span>:</span>
super(ScreensManager, self).__init__(**kwargs)
self.add_widget(HomeScreen(name=<span class="hljs-string">"home"</span>))
self.add_widget(IndexScreen(name=<span class="hljs-string">"index"</span>))
<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">PlanningApp</span><span class="hljs-params">(App)</span>:</span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">build</span><span class="hljs-params">(self)</span>:</span>
store = JsonStore(<span class="hljs-string">'store.json'</span>)
store.put(<span class="hljs-string">'test'</span>, note=<span class="hljs-string">'test'</span>)
<span class="hljs-keyword">return</span> ScreensManager()
<span class="hljs-keyword">if</span> __name__ == <span class="hljs-string">"__main__"</span>:
PlanningApp().run()
</code></pre></div>
<div class="hljs-code-div"><div class="hljs-line-numbers"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></div><pre><code class="hljs language-vim"># fichier screensmanager.kv
<span class="hljs-symbol"><HomeScreen></span>:
BoxLayou<span class="hljs-variable">t:</span>
Button:
tex<span class="hljs-variable">t:</span> <span class="hljs-string">'Switch to Index'</span>
on_pres<span class="hljs-variable">s:</span> root.manager.transition.direction = <span class="hljs-string">'left'</span>
on_pres<span class="hljs-variable">s:</span> root.manager.current = <span class="hljs-string">'index'</span>
<span class="hljs-symbol"><IndexScreen></span>:
BoxLayou<span class="hljs-variable">t:</span>
Button:
tex<span class="hljs-variable">t:</span> <span class="hljs-string">'Switch to Home'</span>
on_pres<span class="hljs-variable">s:</span> root.manager.transition.direction = <span class="hljs-string">'right'</span>
on_pres<span class="hljs-variable">s:</span> root.manager.current = <span class="hljs-string">'home'</span>
</code></pre></div>
<div class="hljs-code-div"><div class="hljs-line-numbers"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></div><pre><code class="hljs language-nix"><span class="hljs-comment"># fichier testapp.spec (utilisé par pyinstaller)</span>
<span class="hljs-comment"># -*- mode: python -*-</span>
<span class="hljs-attr">block_cipher</span> = None
<span class="hljs-attr">a</span> = Analysis(['main.py'],
<span class="hljs-attr">pathex=['/Users/leir/Code/testapp'],</span>
<span class="hljs-attr">binaries=[],</span>
<span class="hljs-attr">datas=[('screensmanager.kv','.'),</span>
('store.json','.')],
<span class="hljs-attr">hiddenimports=[],</span>
<span class="hljs-attr">hookspath=[],</span>
<span class="hljs-attr">runtime_hooks=[],</span>
<span class="hljs-attr">excludes=['_tkinter',</span> 'Tkinter', 'pyenchant', 'twisted'],
<span class="hljs-attr">win_no_prefer_redirects=False,</span>
<span class="hljs-attr">win_private_assemblies=False,</span>
<span class="hljs-attr">cipher=block_cipher,</span>
<span class="hljs-attr">noarchive=False)</span>
<span class="hljs-attr">pyz</span> = PYZ(a.pure, a.zipped_data,
<span class="hljs-attr">cipher=block_cipher)</span>
<span class="hljs-attr">exe</span> = EXE(pyz,
a.scripts,
[],
<span class="hljs-attr">exclude_binaries=True,</span>
<span class="hljs-attr">name='testapp',</span>
<span class="hljs-attr">debug=False,</span>
<span class="hljs-attr">bootloader_ignore_signals=False,</span>
<span class="hljs-attr">strip=False,</span>
<span class="hljs-attr">upx=True,</span>
<span class="hljs-attr">console=False</span> )
<span class="hljs-attr">coll</span> = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
<span class="hljs-attr">strip=False,</span>
<span class="hljs-attr">upx=True,</span>
<span class="hljs-attr">name='testapp')</span>
<span class="hljs-attr">app</span> = BUNDLE(coll,
<span class="hljs-attr">name='testapp.app',</span>
<span class="hljs-attr">icon=None,</span>
<span class="hljs-attr">bundle_identifier=None)</span>
</code></pre></div>
<p>Ma question est : est-ce que quelqu’un a déjà packagé avec succès une app avec un fichier JSON Storage ?</p>erreur quand on export pour android, message #1126502016-06-01T10:14:19+02:00ibayaola/@ibayaolahttps://zestedesavoir.com/forums/sujet/6199/erreur-quand-on-export-pour-android/?page=1#p112650<p>git clone <a href="https://github.com/kivy/buildozer.git">https://github.com/kivy/buildozer.git</a> && cd buildozer
&& sudo python2.7 setup.py install</p>erreur quand on export pour android, message #1126072016-05-31T19:39:47+02:00nohar/@noharhttps://zestedesavoir.com/forums/sujet/6199/erreur-quand-on-export-pour-android/?page=1#p112607<p>Le problème semble venir d'un conflit du style "j'essaye de charger un binaire en 32 bits dans un environnement 64 bits".</p>
<p>Comment as-tu installé kivy/buildozer ? Tu as moyen de le recompiler sur ta machine ? </p>erreur quand on export pour android, message #1125632016-05-31T09:55:04+02:00ibayaola/@ibayaolahttps://zestedesavoir.com/forums/sujet/6199/erreur-quand-on-export-pour-android/?page=1#p112563<p>Salut à tous zesteur je suis un codeur python qui s'est mis à kivy il y'a peu. je viens de finir un tutoriels et quand j'exporte pour android avec la commande: "buildozer android debug deploy run" le terminal me retourne une erreur liée à cython et il faut noter que j'ai installé cython. je comprends pas ce qui se passe, de l'aide s'il vous plait et merci d'avance.
voici l'erreur du terminal avec un log_level = 2:</p>
<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20</pre></div></td><td class="code"><div class="codehilite"><pre><span></span>Call build_pyjnius
Entering in ARM environment
Compiler found at /home/bayaola/android-ndk-r10e/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin//arm-linux-androideabi-gcc
/home/bayaola/Documents/weatherAPP/.buildozer/android/platform/python-for-android/build/python-install/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'install_requires'
warnings.warn(msg)
running build_ext
failed to import Cython: /home/bayaola/Documents/weatherAPP/.buildozer/android/platform/python-for-android/build/python-install/lib/python2.7/lib-dynload/_io.so: wrong ELF class: ELFCLASS32
error: Cython does not appear to be installed
/home/bayaola/Documents/weatherAPP/.buildozer/android/platform/python-for-android/build/python-install/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'install_requires'
warnings.warn(msg)
running build_ext
failed to import Cython: /home/bayaola/Documents/weatherAPP/.buildozer/android/platform/python-for-android/build/python-install/lib/python2.7/lib-dynload/_io.so: wrong ELF class: ELFCLASS32
error: Cython does not appear to be installed
# Command failed: ./distribute.sh -m "kivy" -d "WeatherApp"
#
# Buildozer failed to execute the last command
# The error might be hidden in the log above this error
# Please read the full log, and search for it before
# raising an issue with buildozer itself.
# In case of a bug report, please add a full log with log_level = 2`
</pre></div>
</td></tr></table>