2017-06-11 6 views
1

J'ai un script qui utilise la bibliothèque d'assistance de Google et qui doit importer des modules à partir de là. J'ai compris que cela ne fonctionne que dans un environnement virtuel Python, ce qui est vraiment étrange. Dans le même dossier, j'ai un script qui utilise les broches GPIO et doit utiliser root. Ils interagissent entre eux, donc quand je lance le script GPIO, le script Assistant est également démarré. Mais pour une raison quelconque, les modules ne peuvent pas être importés lorsque le script est démarré avec root. Est-ce que quelqu'un sait quelque chose à ce sujet?Python ne trouve pas le module lorsqu'il est démarré avec sudo

+0

'sudo' s'exécute dans un environnement différent et vos packages installés par l'utilisateur ne sont pas disponibles. Cela ressemble à votre problème? Pourquoi n'activez-vous pas virtualenv en tant que root? –

+0

Installez tous vos paquets en tant que root, je suppose. Ou créez une racine 'venv'. – erip

+0

@ cricket_007 Cela semble juste, mais comment puis-je activer le venv en tant que root? – Jan

Répondre

1

Normalement, vous pouvez activer un environnement virtuel et utiliser l'interpréteur à l'intérieur de l'environnement pour exécuter votre script. Mais ce n'est pas nécessaire.

Supposons que vous ayez un env virtuel sous le chemin/chemin à env/env le script que vous voulez exécuter example.py est sous le chemin /path-to-script/example.py

vous

peut déjà exécuter cet exemple.py comme

sudo /path-to-env/env/bin/python /path-to-script/example.py 
+0

Cela dit seulement sudo:/env/bin/activate : commande non trouvée (/ env/bin/activate est le chemin vers mon venv) Dois-je m'en procurer un? – Jan

+0

Avez-vous déjà créé un environnement virtuel? Vous n'avez pas besoin de l'activer, essayez d'exécuter votre script comme je l'ai écrit. – milo

+0

vous voulez dire /chemin-à-env/env/bin/python /path-to-script/example.py fonctionne mais cela ne fonctionne pas avec sudo? fondamentalement même commande juste avec/sudo se comporter différemment? – milo