web-dev-qa-db-ja.com

Pipを使ってPythonパッケージを別のディレクトリにインストールしますか?

私は明らかな答えはvirtualenvとvirtualenvwrapperを使うことであることを知っていますが、さまざまな理由で私はそれをすることができない/したくないです。

それではどのように私はコマンドを変更するのですか

pip install package_name

pipがデフォルトのsite-packages以外の場所にパッケージをインストールするようにするには?

356
Monika Sulik

つかいます:

pip install --install-option="--prefix=$PREFIX_PATH" package_name

--ignore-installedを使用して、この新しいプレフィックスを使用してすべての依存関係を強制的に再インストールすることもできます。 --install-optionを複数回使用して、python setup.py installで使用できるオプションを追加することができます(--prefixがおそらく必要なものですが、もっとたくさんのオプションがあります)。

301
Ian Bicking

--target スイッチは、あなたが探しているものです。

pip install --target=d:\somewhere\other\than\the\default package_name

しかし、その場所から実際にそれらを使用するには、PYTHONPATHd:\somewhere\other\than\the\defaultを追加する必要があります。

-t、 - target <dir>
パッケージを<dir>にインストールします。デフォルトでは、これは<dir>内の既存のファイル/フォルダを置き換えません。
<dir>内の既存のパッケージを新しいバージョンに置き換えるには、--upgradeを使用します。


ターゲットスイッチが利用できない場合はpipをアップグレードします。

LinuxまたはOS Xの場合

pip install -U pip

Windowsの場合(これは 問題 /を回避します:)

python -m pip install -U pip
420

--targetオプションや--install-optionsオプションの代わりに、以下がうまくいくことがわかりました(これに関するバグに関する議論から https://github.com/pypa/pip/issues/446 )。

PYTHONUSERBASE=/path/to/install/to pip install --user

(または、コマンドを実行する前にexport PYTHONUSERBASE=/path/to/install/toを使用して環境内のPYTHONUSERBASEディレクトリを設定します。)

これは非常に便利な--userオプションを使いますが、$HOME/.localではなくカスタムプレフィックスの下でbinlibshare、その他のディレクトリを作るように指示します。

その後、通常のインストールディレクトリと同じように、これをPATHPYTHONPATH、その他の変数に追加できます。

これが依存するパッケージでシステム提供のバージョンを上書きするために新しいバージョンをPYTHONUSERBASEディレクトリにインストールする必要がある場合は、--upgradeおよび--ignore-installedオプションも指定する必要があるかもしれません。

完全な例:

PYTHONUSERBASE=/opt/mysterypackage-1.0/python-deps pip install --user --upgrade numpy scipy

.. scipynumpyパッケージの最新バージョンをディレクトリにインストールするには、そのディレクトリをPYTHONPATHに含めることができます(この例では、bashとCentOS 6上のpython 2.6を使用)。

export PYTHONPATH=/opt/mysterypackage-1.0/python-deps/lib64/python2.6/site-packages:$PYTHONPATH
export PATH=/opt/mysterypackage-1.0/python-deps/bin:$PATH

virtualenvを使用することは、まだより良い、より良い解決策です!

58
David Gardner

Pythonパッケージをインストールすることはしばしば純粋なPythonファイルだけを含みます。パッケージにデータ、スクリプト、実行可能ファイルが含まれている場合、これらは純粋なPythonファイルとは異なるディレクトリにインストールされます。

パッケージにデータ/スクリプト/実行可能ファイルがなく、Pythonファイルを/python/packages/package_name(および/python/packagesを使用する場合のように--prefixより下のレベルのサブディレクトリではない)に入れたい場合は、1回限りのコマンドを使用できます。

pip install --install-option="--install-purelib=/python/packages" package_name

あなたのパッケージの全部(またはほとんど)をそこに入れたい場合は、~/.pip/pip.confを編集して以下を含めることができます。

[install]
install-option=--install-purelib=/python/packages

そのようにあなたは何度も何度もそれを指定しなければならないことを忘れることができません。

追加のインストールオプション(--prefix/--install-data/--install-scriptsなど、詳細については カスタムインストール optionsを参照)を指定しない限り、パッケージに含まれるすべてのexcecutables/data/scriptsはデフォルトの場所に移動します。

42
Anthon

ライブラリを希望の場所にピップインストールするには、ターミナルがあるディレクトリを希望する場所に移動してから使用しました。

pip install mylibraryName -t . 

私がこのページから持ってきた論理: https://cloud.google.com/appengine/docs/python/googlecloudstorageclient/download

26
user2738183

誰も-tオプションについて言及していないようですが、それが最も簡単です。

pip install -t <direct directory> <package>
17
Erwan

@Ian Bickingの回答に1点だけ追加してください。

--userオプションを使用してインストールディレクトリを指定することは、リモートサーバー上の(Sudoユーザー権利なしで)ホームディレクトリにPythonパッケージをインストールしたい場合にも有効です。

例えば。、

pip install --user python-memcached

このコマンドは、PYTHONPATHにリストされているディレクトリのいずれかにパッケージをインストールします。

14
Good Will

新しいバージョンのpip(8以降)では、 --prefixオプション を直接使用できます。

pip install --prefix=$PREFIX_PATH package_name

$PREFIX_PATHは、lib、bin、およびその他の最上位フォルダが配置されるインストールプレフィックスです。

12
Mike T
pip install packageName -t pathOfDirectory

または

pip install packageName --target pathOfDirectorty
8
kundan kaushik

これらのオプションをpython3.5とpip 9.0.3でテストしました。

pip install --target/myfolder [packages]

/ myfolder以下の依存関係を含むすべてのパッケージをインストールします。依存パッケージがすでにPythonの他の場所にインストールされていることを考慮に入れません。/myfolder/[package_name]からパッケージが見つかります。 Pythonのバージョンが複数ある場合、これは考慮されません(パッケージフォルダ名にPythonのバージョンはありません)。

pip install --prefix/myfolder [packages]

チェックは既にインストールされている依存関係です。 /myfolder/lib/python3.5/site-packages/[packages]にパッケージをインストールします

pip install --root/myfolder [packages]

--prefixのような依存関係をチェックしますが、インストール場所は/myfolder/usr/local/lib/python3.5/site-packages/[package_name]になります。

pip install --user [packages]

$ HOMEにパッケージをインストールします。

=>ほとんどの場合、--userが最適な選択肢です。何らかの理由でホームフォルダを使用できない場合は--prefixを使用してください。

7
Mikko

/usr/localへの書き込み権限がない場合、 IPython のインストールで問題が発生したため、すでに良いアドバイスを付け加えます。

pipはインストールをするのにdistutilsを使っています。そして このスレッドsys.prefix設定に依存しているため、どのようにして問題を引き起こす可能性があるかを説明しています。

私の問題はIPythonインストールが パーミッション拒否 で '/ usr/local/share/man/man1'に書き込もうとした時に起こりました。インストールに失敗したため、binディレクトリにIPythonファイルを書き込めませんでした。

" - ユーザー"を使用して動作し、ファイルが〜/ .localに書き込まれました。 $ PATHに〜/ .local/binを追加すると、そこから "ipython"を使用できるようになります。

しかし、私はこれを多数のユーザーにインストールしようとしており、/usr/local/lib/python2.7ディレクトリへの書き込み許可を与えられていました。その下に "bin"ディレクトリを作成し、distutils用のディレクティブを設定しました。

vim ~/.pydistutils.cfg

[install]
install-data=/usr/local/lib/python2.7
install-scripts=/usr/local/lib/python2.7/bin

-Iは以前の失敗/ .localインストールにもかかわらずインストールを強制するために使用されます):

pip install -I ipython

それから私は/usr/local/lib/python2.7/bin$PATHに加えました。

他の誰かがSudoにアクセスできないマシン上で同様の問題を抱えている場合に備えて、私はこれを含めると思いました。

3
Stuart Brock

私はドキュメンテーションに従い、〜/ .pip/pip.confファイルを作成することを勧めます。ドキュメントには、指定されたヘッダディレクトリがないため、次のエラーが発生します。

error: install-base or install-platbase supplied, but installation scheme is incomplete

Confファイルの完全な作業内容は次のとおりです。

[install]
install-base=$HOME
install-purelib=python/lib
install-platlib=python/lib.$PLAT
install-scripts=python/scripts
install-headers=python/include
install-data=python/data

残念ながら私はインストールすることができますが、pipをアンインストールしようとするとアンインストールプロセスのためのそのようなパッケージがないことを教えてくれます....だからまだ何か間違っているがパッケージは事前定義された場所に行きます。

0
kensai

あなたがpythonでbrewを使っているなら、残念ながらpip/pip3は非常に限られたオプションで出荷されます。上記のように--install-option、--target、--userオプションはありません。

pip install - /on
通常のpip install --userは、作成されたPythonでは無効になっています。これは、Homebrewがパッケージの接頭辞を設定するdistutils.cfgを作成するため、distutilsのバグのためです。考えられる回避策(実行可能スクリプトを〜/ Library/Python /./ binに置きます)は次のとおりです。python -m pip install --user --install-option="--prefix=" <package-name>

あなたはこの行がとても面倒だと思うかもしれません。管理にはpyenvを使うことをお勧めします。あなたが使っているなら

brew upgrade python python3

皮肉なことに、あなたは実際に downgrade pip機能です。

(私のMac OSXのpipに--targetオプションがないため、この回答を投稿しています。修正に何時間も費やしました)

0
anonymous

Python v1.5.6(GNU/Linux)のpip v2.7.3では、オプション--rootは、(明らかに)特定のパッケージのオプションに関係なく、グローバルなインストールプレフィックスを指定することを可能にします。試してみてください、

$ pip install --root=/alternative/prefix/path package_name
0
sphakka

pip install /path/to/package/

今は可能です。

これと-eまたは--editableフラグを使うことの違いは、-eがあなたのpythonパスにそれをインストールするのではなく、パッケージが保存されている場所(すなわちダウンロードフォルダ)にリンクすることです。

つまり、パッケージを削除/別のフォルダに移動した場合、そのパッケージを使用することはできません。

0
A H