2011-08-15 6 views
1

システム全体にインストールする権限がないため、Pythonパッケージをホームディレクトリにインストールしようとしています。Python 2.4でホームディレクトリパッケージがロードされない

パッケージはPyProjです。Pythonのドキュメントで推奨されているように、python setup.py install --home=~(Python 2.4.3)を使用してインストールしようとしています。パッケージは正常にコンパイルされ、正しいディレクトリ(インストール時にディレクトリ~/lib64/python/pyprojが表示されている)にコピーされます。

しかし、Pythonをロードしてimport pyprojと入力すると、ImportError: No module named pyprojと言われます。

何が起こっている可能性について考えていますか?

答えて

4

ローカルにインストールされたパッケージの場所をPythonに知らせるには、PYTHONPATHを設定する必要があります。例えば

[[email protected]]$ export PYTHONPATH="~/lib64/python" 

あるいは、インタプリタ(またはスクリプト)内にこれを行うには:

import sys, os 
sys.path.append(os.path.expanduser("~/lib64/python")) 

Pythonがインストールされたモジュールの位置を特定する方法の詳細については、ドキュメントにThe Module search Pathのセクションを参照してください。

+0

PYTHONPATHをどのように設定していますか? – Richard

+0

@リチャード答えが詳細 –

+0

stw_dev上に更新されている限り、答えが行く限りパンチに殴られたようですが、彼の答えはあなたのように問題があるのでそれを受け入れることができません。どちらも 'sys.path.append("〜/ lib64/python ")'を使って提案しましたが、シェル拡張がこのコマンドでは機能しないと思いますので、答えに絶対パスが必要であることに注意してください。さもなければ、物事は今働いているようです。 – Richard

2

~/lib64/python/pyprojは、PYTHONPATHの一部ではありません。これには、必要に応じて2つまたは3つの方法があります。

最初は、モジュール内のパスを直接変更することです.1つのモジュールからのみ使用する場合に適しています。コメントに書かれているように、このメソッドは '〜'文字を拡張しません。

import sys 
sys.path.append('/home/username/lib64/python') 
import pyproj 

第二の方法は、あなたのシステムが示唆どんな方法で、お使いのシステムのPYTHONPATHに~/lib64/python/pyprojを追加することです。 .bash_profileの行を以下に示します。

export PYTHONPATH=$PYTHONPATH:~/lib64/python/pyproj 

詳細については、Python Documentationを参照してください。

+0

あなたの答えはかなり完成しました。私はウェブサーバー上でこれを使用しており、環境を準備するのが難しいため、 'sys.path.append'を使用するようあなたの提案を特に好んでいました。しかし、テストではsys.path.appendが '〜'文字でシェル展開をしないことが分かったので、答えでは絶対パスが必要であることに注意してください。 – Richard

+0

@Richard、実行時に 'sys.path'を変更するのは壊れやすく、お勧めできません。単一のプロセスの環境変数を変更することは、特に侵襲的な作業ではなく、この操作を実行するための好ましい方法です。 –

+0

@Mike、なぜこれが壊れやすいのか拡大できますか? – Richard

関連する問題