1

私の pythonpath 環境変数が無視されていることがわかりました。ubuntuでpython 2.6を使用しています。私.bashrcは次のものを持っています:

export PTYHONPATH=/my/home/mylibs/lib/python2.6/site-packages/:$PYTHONPATH

numpy次に、次を使用して新しいバージョンをインストールします。

python setup.py install --prefix=/my/home/mylibs/

ローカルに正しくインストールされます。setup.pyただし、 numpy の新しいバージョンに依存する他のパッケージを (これも を使用して) インストールしようとすると、デフォルトでロードされた numpy は にあるもので/usr/llibあり、 my に指定されたものではないため、見つけることができませんPYTHONPATH。MyPYTHONPATHは正しく設定されますが、システム全体のディレクトリがまだそれを覆しています。

これはどのように修正できますか?numpyのローカル バージョンにアクセスしたいだけですimport numpy。これに関連する他の投稿をpython 2.4で見ましたが、私が知る限り、解決されたことはありません。また、今のところpipまたはvirtualenvをインストールせずにこれを行いたいと思います。--prefixまたは--homeに渡されたオプションを使用してsetup.py変更できるように思われますがPYTHONPATH、これは私にはうまくいきません...システム全体のlibディレクトリが最初に読み取られます。

編集:提案に従って使用しようとしていますpippip認識しない古い--userバージョン (ver 0.3) をシステム全体にインストールしています。それ自体でアップグレードしようとしましpippipが、ローカルにインストールできないため、もちろん失敗しpip install pip --upgrade --userました。オプションではありません。の新しいバージョンをダウンロードpipしてホーム ディレクトリにローカルにインストールしましたが、プロンプトで入力すると、システム全体の古いバージョンが引き続き使用されpipます。パッケージを調べてpip見つけrunner.pyたので、それを使用してパッケージをインストールしようとしました:

runner.py install --user numpy --upgrade

それでも許可が拒否されて失敗します:

OSError: [Errno 13] Permission denied: '/usr/bin/f2py2.6'

--user壊れているようです。システム全体のpythonがシステム全体のパッケージを使用しているという事実をこれがどのように解決するかもわかりません/usr/lib...これに対する解決策はありますか?現在、Python にローカル パッケージをインストールすることは事実上不可能のようです。

4

1 に答える 1

2

OK、Python は最初に見つかったパッケージを使用します。PYTHONPATH は、システム パスの後に sys.path に追加されます。したがって、通常は最初にシステム 1 が検索されます。しかし、「公式の」ユーザーごとのパッケージディレクトリはその前に配置されているようです。したがって、個人用の site-packages ディレクトリを作成します。

mkdir -p $HOME/.local/lib64/python2.7/site-packages
mkdir $HOME/bin

(「lib64」を「lib32」または単に「lib」に変更する必要がある場合があります)

このディレクトリは、システムのシステム 1 の前に配置されます。ただし、sys.path を出力して確認する必要があります。

次に、そこにパッケージをインストールします。ただし、--user最新バージョンのオプションでは、pipすでにそこに配置されているはずです。

リストリゾートとして操作できますsys.path。システムサイトパッケージの前にディレクトリをsys.pathに挿入してから、numpyをインポートできます。

スクリプトのインストールから権限エラーが発生し、それをシステムの場所に配置しようとしています。$HOME/bin ディレクトリにスクリプトをインストールするための追加オプションを渡すことができます。

次のようにインストールします。

pip install --user --install-option="--install-scripts=$HOME/bin"
于 2012-08-10T13:10:40.657 に答える