2017-10-08 4 views
1

私は私のPythonプログラムを実行する必要があるたびに実行します。このような削除sudoはPythonスクリプト

一部のエラー:私は実行したより

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

sudo python my_program.py 

そして、すべてのものが正常に動作します。私のpythonコードを実行するためにsudoコマンドを削除するには?

+0

あなたはsudoの下にPythonをインストールしているようですので、sudoのない後のコマンドはroot権限を持つフォルダにアクセスできません。 Pythonを再インストールしようとすると、常に物事をインストールするためにsudoを使用しないでください、あなたはパーミッション管理を台無しにするかもしれません。 –

+0

[インストールされたPythonモジュールをインポートできません(機械化)](https://stackoverflow.com/questions/14295680/cannot-import-a-python-module-that-is-definitely-installed-mechanize ) – thatrockbottomprogrammer

答えて

2

ImportError: No module named 'matplotlib'は、Pythonがモジュールを見つけられなかった場合に発生します。 sudoは、環境変数を変更します。それが理由です。

これを修正するには、matplotlibがコンピュータにインストールされている場所を探し、そのフォルダがsys.pathの一部であることを確認します。

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

その後、次の2つの選択肢ました:、あなたのスクリプトからそのパスを挿入すなわち、このようなimport sys; sys.path.append(<folder>)行を追加またはパスにフォルダを追加するユーザーの下PYTHONPATHのenv変数を設定します。

PYTHONPATH起動時に変数envがsys.pathにロードされます。

+0

私は2番目のオプションを理解していませんでした。どのようにPYTHONPATHを設定できますか? –

0

私にとって最善の解決策は、すべてのプロジェクトの一般的なワークフローです。仮想環境を使用する1

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

次に、ライブラリをpipで再インストールする必要があります。これらのライブラリは、他のすべてのものから隔離された仮想環境にインストールされます。

関連する問題