$ HOMEフォルダーへのpipパッケージのインストール


330

出来ますか?をインストールするときにpip、Pythonパッケージを私の$HOMEフォルダー内にインストールします。(たとえば、をmercurial使用してインストールしたいが、の代わりにpip内部$HOMEにしたい/usr/local

私はMacマシンを持っていて、この可能性について考えただけで、を「汚染」する代わりに、代わり/usr/localにを使用し$HOMEました。

PEP370はまさにこれについてです。ちょうど作成される˜/.localとやるpip install packageだけの私の$ HOMEフォルダでこれらのパッケージをインストールするように十分に?


virtualenvをチェックアウトしましたか?分離された環境でpipを使用してパッケージをインストールできます。
joet3ch 2011

2
考えましたが、既存のpython(2.6.1)を使用して一部のpythonアプリケーションをインストールしたいのですが、/ usr / local /にインストールする代わりに、$ HOMEフォルダーにインストールして$ PATHに追加します。それが可能かどうか、このアプローチの注意点を知りたい。
誰かがまだあなたにMS-DOS使用して

11
PEP370を宣伝するための+1。これはシンプルですが、より多くの人が知っておくべき便利なオプションです。
Ned Deily、2011

私は同様の問題(おそらく2つの異なるpyhtonのpipとeasy_installの設定ミスが原因)と戦っていました。最後の手段として、私はプレーンを使用しようとしました$ python setup.py --user install。そしてそれはうまくいった。パッケージがホームサブディレクトリにインストールされ、すべて期待どおりに動作します。サーバー管理者に相談する必要があります。
Jan Vlcinsky 2013年

1
PIPをインストールする必要がある場合は、wget https://bootstrap.pypa.io/get-pip.pyfollowed byのようpython get-pip.pyな操作を行ってください。インストールされているPIPが古すぎるマシンを使用している場合に役立つことがあります(私がそうでした)。詳細については、pip.readthedocs.org / en / latest / installing.htmlを参照してください。
マーカス2014

回答:


463

を使用できますが、使用するvirtualenv必要はありません。トリックは、PEP370 --user引数をsetup.pyスクリプトに渡すことです。の最新バージョンではpip、それを行う1つの方法は次のとおりです。

pip install --user mercurial

これにより、hgスクリプトがにインストールされ$HOME/.local/bin/hg、残りのhgパッケージがにインストールされます$HOME/.local/lib/pythonx.y/site-packages/

上記はPython 2.6にも当てはまることに注意してください。Pythonコアの開発者の間で、PEP370スタイルのインストールにMac OS Xで適切なディレクトリの場所は何かについて、多少の論争がありましたuser。Python 2.7および3.2では、Mac OS Xでの場所がからに変更され$HOME/.localました$HOME/Library/Python。これは将来のリリースで変更される可能性があります。ただし、現時点では、2.7(およびhgPython 3でサポートされている場合は3.2 )では、上記の場所は$HOME/Library/Python/x.y/bin/hgおよびになり$HOME/Library/Python/x.y/lib/python/site-packagesます。


いい視点ね。残念ながら、Python 2.7にはバグがあり、OS XフレームワークビルドでPYTHONUSERBASEが無視されます。Python 2.7.3では修正される予定です。
Ned Deily、2011

1
これはとてもおもしろそうです。easy_installはデフォルトでMac OS Xにインストールされるため、$HOMEフォルダの外にインストールされるのはpipのみです。
誰かがまだあなたにMS-DOS使用しています

1
PYTHONUSERBASEを別の場所に変更しようとしました。失敗。具体的には、これはWindowsでどのように行われますか?
Snerd 2013

2
これを行ってからconda環境を使用しようとすると、インストールされたファイル.localが常に最初にヒットするため、インポートエラーの追跡が非常に困難になる可能性があることに注意してください。
tacaswell 2015年

12
OSXでは、ユーザーサイトディレクトリのbinフォルダーがPATH上にないことに注意してください。つまり、ユーザーサイトディレクトリのパッケージによってインストールされたスクリプトは、実行しない限り実行できませんexport PATH=$PATH:~/Library/Python/X.Y/bin/
アンドレ・キャノン

21

私はあなたのHOMEディレクトリでvirtualenvを使用します。

$ sudo easy_install -U virtualenv
$ cd ~
$ virtualenv .
$ bin/pip ...

次に~/.(login|profile|bash_profile)、シェルが〜/ binをPATHに追加するのに適切な方を変更することもできpip|python|easy_installます。そうすると、デフォルトで使用されます。


9
「事実上の」これを行う方法がありますvirtualenv venvsource venv/bin/activate。必ずしも常に virtualenvを使用する必要はないかもしれません。この方法(venv)を使用することで、使用時にプロンプトの前にプレフィックスが付けられます。
nyuszika7h 2014

2
@ nyuszika7h virtualenvの使い方を知っています。しかし、これは本当に質問に答え、非常にきちんとした解決策です。
itsafire 2015年

8
@itsafire「私たち」は誰ですか?en.wikipedia.org/wiki/Weasel_word
nyuszika7h

3
とにかく、私は同意しません、これは「きちんとした解決策」ではありません。それは無意味なハックです。
nyuszika7h

19

-tオプション(--target)を指定して、宛先ディレクトリーを指定できます。詳細についてはpip install --help、を参照してください。これはあなたが必要とするコマンドです:

pip install -t path_to_your_home package-name

たとえば、say mxnetをインストールするには、私の$HOMEディレクトリに次のように入力します。

pip install -t /home/foivos/ mxnet

エラーが発生しますdistutils.errors.DistutilsOptionError: can't combine user with prefix, exec_prefix/home, or install_(plat)base。どういう意味ですか?
アンソニーコング

関連する議論についてはgithub.com/pypa/pip/issues/3826をチェックしてください。これについては何も知りませんが、自分の環境で問題が発生したことはありません。
Foivos
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.