web-dev-qa-db-ja.com

シェルでのPYTHONPATHの変更

私はPythonとシェルスクリプトのまったく新しいユーザーであり、問​​題をグーグルで調べて机に頭をぶつけた後でも、これで行き詰まりに遭遇しました。どんな助けでも感謝!

SSHを使用するシェルでPython 2.7.3を実行しています。いくつかのプログラム/分析を実行するためのコードをダウンロードしました。最初のプログラムを実行すると、次のエラーが発生します。

    Traceback (most recent call last):
    File "./[script1].py", line 7, in <module>
    import [script1]
    File "[directory]/[script].py", line 22, in <module>
    import gdata.spreadsheet.service
    ImportError: No module named gdata.spreadsheet.service

[スクリプト1]は、コードパッケージの一部として提供されたのと同じフォルダー内のpythonスクリプトを指し、Googleデータpythonパッケージ、これを同じフォルダーにダウンロードし、gunzipし、tarを解凍してから、(。/configureなどを使用して)インストールしました。エラーの検索に基づいて、ここのPYTHONPATHに問題があると推測します。 [script1] .pyとGdataフォルダーは、実行しているスクリプトと同じディレクトリ内にありますが、見つかりません。「Echo $ PYTHONPATH」は、それが未定義の変数であり、空白もあることを示していますディレクトリ内のinit。pyファイル。そのディレクトリ内のどこにも「bash」または「bashrc」という単語を含むファイルはありません。同様に、起動しても「sys.path」ファイルが見つからないようです。 up Python and print(sys.path)結果の出力を取得します:

['', 
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PIL',
'/usr/lib/python2.7/dist-packages/gst-0.10',
'/usr/lib/python2.7/dist-packages/gtk-2.0',
'/usr/lib/pymodules/python2.7',
'/usr/lib/python2.7/dist-packages/ubuntu-sso-client',
'/usr/lib/python2.7/dist-packages/ubuntuone-client',
'/usr/lib/python2.7/dist-packages/ubuntuone-installer',
'/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol',
'/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode']

私も試しました

export PYTHONPATH=[directory]

私のシェルでは、「export:commandnotfound」を吐き出します。

このすべてに新参者を許してください-これに関するどんな助け(私の疑いが正しいかどうか、そしてそれらを解決する方法)は大いにありがたいです!

6
user2152303

PYTHONPATHの設定

試したexportコマンドの出力から、使用しているシェルはbashではないように見えます。 この投稿 どのシェルを使用しているかを確認する方法について説明します。シェルを見つけたら、そのシェルで環境変数(PYTHONPATH)を設定する方法を見つけることができます。

これらを試して、スクリプトの実行中にPYTHONPATHを設定することもできます(最後のスクリプトは(T)CSHで機能するはずです)。

_PYTHONPATH=your_directory python script_name
_

そして

_env PYTHONPATH=your_directory python script_name
_

設定したPYTHONPATHが機能することをテストする

上記のようなスクリプトを_python script_name_で実行する代わりに、PYTHONPATHが実際に設定されてPython内で機能することを確認するには、python -c 'import os; print os.getenv("PYTHONPATH")'を使用します。設定したPYTHONPATHが表示されます。

同様に、Pythonインタプリタに_sys.path_を出力すると、エントリの1つとしてPYTHONPATHにパスが出力されます。

PYTHONPATHが正しく設定されている場合

PYTHONPATHを正常に設定しても問題が解決しない場合は、gdataにあるパスからPythonインタープリターを実行してみてください。

_cd path_which_has_subdirectory_gdata
python
_

Pythonインタープリターで、gdataモジュールをインポートしてみてください:

_import gdata
_

それが機能する場合は、ImportErrorの原因となるモジュールもインポートしてみてください。

_import gdata.spreadsheet.service
_

これらのインポートがPythonインタープリターから機能する場合は、[script1]に問題がある可能性があります。そうでない場合は、gdataモジュールが実際にあると思う場所にあることを確認してください。モジュールの正しいディレクトリです。 ___init__.py_という名前のファイルが含まれている必要があり、PYTHONPATHはディレクトリを指すように設定する必要がありますabove階層内のモジュール。

7
miikkas