Ultchad / snips-skill-spotifywebapi

SpotifyWebApi french skill for snips.ai
2 stars 4 forks source link

Avec token-generator.py j'ai cette erreur: #8

Closed richardpub4136 closed 5 years ago

richardpub4136 commented 5 years ago

Avec token-generator.py j'ai cette erreur:

Traceback (most recent call last): File "token-generator.py", line 4, in import spotipy ImportError: No module named spotipy

Ultchad commented 5 years ago

C'est que tu n'a pas charger l’environnement virtuel python Dans le dossier de l'app tu devrais avoir un dossier venv, si ce n'est pas le cas ou dans le doute exécute setup.sh

./setup.sh

Puis

 . venv/bin/activate

Et la tu devrais avoir les bonnes librairies J'ai du oublié de le précisé dans le README

une fois l'environnement virtuel python "activé" tu n'utilise plus le python du système mais celui dans venv, sa permet de ne pas polluer celui du système et les APP de Snips fonctionne comme sa c'est le setup.sh qui ce charge de créé/préparer l’environnement adéquate

richardpub4136 commented 5 years ago

Merci pour la réponse je m’y remet à mon retour de vacances

Envoyé de mon iPhone

Le 17 janv. 2019 à 16:15, Ultchad notifications@github.com a écrit :

C'est que tu n'a pas charger l’environnement virtuel python Dans le dossier de l'app tu devrais avoir un dossier venv, si ce n'est pas le cas ou dans le doute exécute setup.sh

./setup.sh Puis

. venv/bin/activate Et la tu devrais avoir les bonnes librairies J'ai du oublié de le précisé dans le README

une fois l'environnement virtuel python "activé" tu n'utilise plus le python du système mais celui dans venv, sa permet de ne pas polluer celui du système et les APP de Snips fonctionne comme sa c'est le setup.sh qui ce charge de créé/préparer l’environnement adéquate

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or mute the thread.

bart11064 commented 5 years ago

Je confirme : même problème. Ton correctif est OK @Ultchad

bart11064 commented 5 years ago

Par contre j'ai dû faire un chmod 777 sur le répertoire du skill pour que le token puisse être écrit. C'est le user pi qui veut écrire et il n'a pas les droits par défaut. Ca me fait penser, dans la doc, le répertoire par défaut n'est plus le bon, maintenant c'est : /var/lib/snips/skills/snips-skill-spotifywebapi

Ultchad commented 5 years ago

Merci pour le chemin vers le dossier j'avais oublié snips, c'est corrigé J'ajouterai a la Doc l'activation de l'environnement virtuel python

. venv/bin/activate

Pour le problème de droits je vais essayer de corrigé ça dans le setup.sh et voir comment les autres gère ce problème Merci pour l'aide

bors-ltd commented 5 years ago

Je confirme le problème, le venv est créé mais il y a maintenant un warning quand on créé un venv Python 2, et comme le code de sortie n'est plus 0, à cause du flag bash -e, le script setup.sh quitte avant d'installer les dépendances.

La seconde fois, comme le venv est déjà installé, setup.sh fait ce qu'il faut.

Si tu n'as pas déjà commencé, je serai ravi de migrer ton app à Python 3.

Edit: tu peux aussi demander aux gens de lancer ./venv/bin/python token-generator.py mais il reste le problème de droits. Perso je fais tout avec sudo et je fais un chown ensuite mais je ne conseillerais pas de travailler comme ça.

Ultchad commented 5 years ago

J'ai commencé une migration vers python3, en dev mais je ne suis pas contre de l'aide car mon travail n'est pas très "propre" de ce coté Par contre je pense qu'il serais mieux que l'on ouvre une issue "Compatibilité python3" pour tout référencé (j'essaie de faire les chose bien, j’apprends sur le tas)

Je regarde ça pour le problème du bash, dans le template officiel le Shebang est mis comme ça, et sa pose problème depuis que python2 est déprécié via la commande pip

Et c'est une bonne idée d'ajouter a la doc pour la génération du token:

./venv/bin/python token-generator.py

Je garde ce ticket pour le problème initiale: token-generator et la mise a jours de la doc

Désolé pour cette réponse un peux brouillon et merci pour vos retour

bors-ltd commented 5 years ago

Je disais une bêtise, c'est pip install qui génère cette erreur. Sinon ça ne reviendrait pas à chaque redéploiement de l'assistant.

On peut s'en sortir avec un pip install -r requirements.txt || true mais avec le risque de laisser setup.sh continuer s'il y a une erreur légitime.

Bon vu que dans notre cas, on ne fait qu'initialiser le fichier de config, ça me paraît sûr.

Je n'ai pas trouvé le moyen de le désactiver dans pip lui-même.

bors-ltd commented 5 years ago

Qui qui c'est qui dit des bêtises parce qu'il parle sans vérifier ? C'est moiiii...

Ce n'est pas du tout un problème de code de sortie mais de message écrit sur stderr qui fait dire à sam ou en tout cas le programme qui lance ./setup.sh que quelque chose s'est mal passé.

Exemple

$ ./venv/bin/pip2 install -r requirements.txt 2>/dev/null 
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
[...]
Successfully installed spotipy

Hop ! plus d'avertissement alors que c'était encore du Python 2.

Donc les dépendances sont bien installées au déploiement de l'application. Il faut juste que les gens lancent la commande dans le contexte du venv.

Mais il reste cet épineux problème de droits. On est en user pi, et même si on change les permissions du répertoire en 777, le fichier créé ne sera pas réinscriptible par _snips-skills pour qu'il puisse renouveler le refresh token. Il faudrait aussi changer les permissions du fichier, ça devient compliqué... On est sur un dev kit pour développeurs, certes, mais l'idée est aussi qu'une application Snips soit simple à installer et utiliser.

Autant on peut obtenir client_id, etc. au déploiement de l'assistant, autant il y a cette histoire de redirect URL qui complique tout. J'imagine que tu avais regardé d'autres méthodes d'authentification mais elles n'étaient pas possibles ?

Ultchad commented 5 years ago

J'ai vue la même chose pour pipi et sa sortie hier, j'oublie de posté mes recherches, merci à toi d'être plus réactif. Pour l'histoire de droit, vue que j'ai bidouiller pas mal et je pense modifier les droit sur mon Snips de prod, j'ai commencé une vm de test avec les réglages par défaut. Pour ce qui est d'une autre méthode d'authentification je n'en ai pas trouvé, du moins en Web api, quand tu a un client spotify c'est plus simple, mais c'est plus de travail et de configuration du rasperry

bors-ltd commented 5 years ago

Effectivement, j'ai regardé spotipy et quelques alternatives, on en revient toujours à l'auth Web.

Puisque le besoin est uniquement de dire aux gens de copier-coller l'URL de retour, pourquoi ne pas monter une page Github (https://help.github.com/en/articles/configuring-a-publishing-source-for-github-pages), préconfigurée dans l'app, qui dirait simplement de copier l'URL de cette page quand l'app la demande. Il suffirait d'une page statique qui pourrait afficher window.location de manière un peu chiadée.

sifus commented 5 years ago

hello,

j'ai toujours ce problème quand je veux generer un token et je n'arrive pas a aller plus loin :

warning:couldn't write token cache to .cache-1137191517 Token gen and test OK: .cache-1137191517

bors-ltd commented 5 years ago

Quelles sont les permissions du dossier /var/lib/snips/skills/snips-skill-spotifywebapi avec ls -l et quelle commande tu lances avec quel utilisateur ?

sifus commented 5 years ago

J'ai ca :

pi@snips-master:/var/lib/snips/skills/snips-skill-spotifywebapi $ ls -l
total 56
-rwxr-xr-x 1 _snips-skills _snips-skills 20404 Mar 27 01:47 action-spotifywebapi.py
-rw-r--r-- 1 _snips-skills _snips-skills   155 Mar 27 16:00 config.ini
-rw-r--r-- 1 _snips-skills _snips-skills    69 Mar 27 01:47 config.ini.default
-rw-r--r-- 1 _snips-skills _snips-skills  2604 Mar 27 01:47 README.md
-rw-r--r-- 1 _snips-skills _snips-skills    84 Mar 27 01:47 requirements.txt
-rwxr-xr-x 1 _snips-skills _snips-skills   391 Mar 27 01:47 setup.sh
-rwxr-xr-x 1 _snips-skills _snips-skills  5130 Mar 27 01:47 token-generator.py
drwxr-xr-x 2 _snips-skills _snips-skills  4096 Mar 27 01:54 translations
drwxr-xr-x 7 _snips-skills _snips-skills  4096 Mar 27 01:49 venv
sifus commented 5 years ago

mais j'ai aussi ce genre d'erreur a l'installation :

Command "git fetch -q --tags" failed with error code 255 in /var/lib/snips/skills/snips-skill-spotifywebapi/venv/src/spotipy

et ca quand j'execute le .py

(venv) pi@snips-master:/var/lib/snips/skills/snips-skill-spotifywebapi $ python action-spotifywebapi.py
Get the cached token: OK

^CTraceback (most recent call last):
  File "action-spotifywebapi.py", line 600, in <module>
    .subscribe_intent('Tealque:modeDisable', modeDisable)\
  File "/var/lib/snips/skills/snips-skill-spotifywebapi/venv/local/lib/python2.7/site-packages/hermes_python/hermes.py", line 282, in loop_forever
    sleep(.1)
KeyboardInterrupt
Ultchad commented 5 years ago

peux tu faire un ls -la dans le dossier (l'option 'a' permettra de voir les fichier caché qui commence par '.' comme le fichier de cache du token)

peux tu donner la commande qui ta permis d'installer ( git clone ... ou sam install action ) et a tu fait . venv/bin/activate avant de lancé l'action ?

Aussi la version en python3 est en test si tu veux #13 pour changer sur la branch beta , dans le dossier git checkout beta

sifus commented 5 years ago

voila

pi@snips-master:/var/lib/snips/skills/snips-skill-spotifywebapi $ ls -la
total 80
drwxr-xr-x 5 _snips-skills _snips-skills       4096 Mar 27 16:14 .
drwxrwxr-x 9 _snips-skills snips-skills-admin  4096 Mar 27 01:48 ..
-rwxr-xr-x 1 _snips-skills _snips-skills      20404 Mar 27 01:47 action-spotifywebapi.py
-rw-r--r-- 1 root          root                 690 Mar 27 16:14 .cache-1137191517
-rw-r--r-- 1 _snips-skills _snips-skills        155 Mar 27 16:00 config.ini
-rw-r--r-- 1 _snips-skills _snips-skills         69 Mar 27 01:47 config.ini.default
drwxr-xr-x 8 _snips-skills _snips-skills       4096 Mar 27 15:48 .git
-rw-r--r-- 1 _snips-skills _snips-skills        389 Mar 27 01:47 .gitattributes
-rw-r--r-- 1 _snips-skills _snips-skills        561 Mar 27 01:47 .gitignore
-rw-r--r-- 1 _snips-skills _snips-skills       2604 Mar 27 01:47 README.md
-rw-r--r-- 1 _snips-skills _snips-skills         84 Mar 27 01:47 requirements.txt
-rwxr-xr-x 1 _snips-skills _snips-skills        391 Mar 27 01:47 setup.sh
-rwxr-xr-x 1 _snips-skills _snips-skills       5130 Mar 27 01:47 token-generator.py
drwxr-xr-x 2 _snips-skills _snips-skills       4096 Mar 27 01:54 translations
drwxr-xr-x 7 _snips-skills _snips-skills       4096 Mar 27 01:49 venv

C'est un insta Sam

sifus commented 5 years ago

je viens de passer en beta et toujours cette ligne sur sam watch

[20:13:45] [Dialogue] session with id '4589d216-81c2-407a-b513-0d2346760da1' was ended on site default. The session was ended because one of the component didn't respond in a timely manner

et ca sur mon rpi

(venv) pi@snips-master:/var/lib/snips/skills/snips-skill-spotifywebapi $ sudo python action-spotifywebapi.py
Traceback (most recent call last):
  File "action-spotifywebapi.py", line 4, in <module>
    import configparser
ImportError: No module named configparser
bors-ltd commented 5 years ago

Note qu'il ne suffit pas de changer de branche, la branche beta est incompatible avec le code installé par sam. Tu peux trouver les instructions sur le ticket #13.

Ultchad commented 5 years ago

Désolé j'avais oublié que snips-skill-server n'allais pas ré exécuté ./setup.sh en branch beta il faut ré exécuté bash ./setup.sh qui va supprimé le virutalenv python2 et install celui de python3

Ultchad commented 5 years ago

Je clos l'incident les différents point aillant reporté sur des issue différente et/ou résolut