2017-10-08 21 views
1

Chaque fois que je dois exécuter mon programme python avec:Supprimer sudo pour exécuter script python

python my_program.py 

je reçois une erreur disant que certaines importations n'a pas été trouvé.

Une erreur comme ceci:

Traceback (most recent call last): 
    File "graphic.py", line 1, in <module> 
    import matplotlib.pyplot as plt 
ImportError: No module named 'matplotlib' 

Que je lance:

sudo python my_program.py 

Et tout fonctionne très bien. Comment puis-je supprimer la commande sudo pour exécuter mes codes python?

+0

Semble que vous installez Python sous sudo, de sorte que la commande ultérieure sans sudo ne peut pas accéder au dossier avec les autorisations root. Essayez de réinstaller Python, rappelez-vous ne pas toujours utiliser sudo pour installer des choses, vous pouvez ruiner la gestion des autorisations. –

+0

Copie possible de [Impossible d'importer un module python définitivement installé (mécanisé)] (https://stackoverflow.com/questions/14295680/cannot-import-a-python-module-that-is-definitely-installed-mechanize – thatrockbottomprogrammer

Répondre

2

ImportError: No module named 'matplotlib' se produit lorsque votre Python ne trouve pas le module. sudo modifie le enviornment variables; C'est pourquoi.

Pour résoudre ce problème, recherchez matplotlib sur votre ordinateur et vérifiez que le dossier fait partie de votre sys.path.

import sys 
sys.path 
['C:\\Python27\\tests', ..., ...] 

Ensuite, vous avez deux options: insérer ce chemin de votre script, i.e. ajoutant une ligne telle import sys; sys.path.append(<folder>) ou configurer PYTHONPATH variable env sous votre utilisateur annexant le dossier sur le chemin.

PYTHONPATH La variable d'environnement est chargée au sys.path au démarrage.

+0

Je n'ai pas compris la deuxième option, comment puis-je configurer le PYTHONPATH? –

0

La meilleure solution pour moi est un flux de travail général pour tous les projets: utilisez virtualenviroment] 1.

sudo pip3 install virtualenv 
virtualenv myenv 
source mynenv/bin/activate 

Ensuite, vous devez installer vos bibliothèques à nouveau avec pip et ils seront installés dans votre virtualenviroment, isolé de tout le reste.