pip を使用して Python パッケージを別のディレクトリにインストールしますか?
質問
明白な答えは、virtualenv と virtualenvwrapper を使用することであることはわかっていますが、さまざまな理由により、それを行うことができない/したくないのです。
では、コマンドを変更するにはどうすればよいですか
pip install package_name
作る pip
デフォルト以外の場所にパッケージをインストールする site-packages
?
解決
使用する:
pip install --install-option="--prefix=$PREFIX_PATH" package_name
あなたも使用したいかもしれません --ignore-installed
この新しいプレフィックスを使用して、すべての依存関係を再インストールするように強制します。使用できます --install-option
使用できるオプションを追加するために複数回 python setup.py install
(--prefix
おそらくあなたが望むものですが、あなたが使用できるより多くのオプションがあります)。
他のヒント
- 目標 スイッチはあなたが探しているものです:
pip install --target=d:\somewhere\other\than\the\default package_name
しかし、まだ追加する必要があります d:\somewhere\other\than\the\default
に PYTHONPATH
その場所から実際にそれらを使用する。
-t、 - ターゲットu003Cdir>
にパッケージをインストールしますu003Cdir>。デフォルトでは、これは既存のファイル/フォルダーを置き換えませんu003Cdir>。
既存のパッケージを置き換えるために - アップグレードを使用しますu003Cdir>新しいバージョンで。
ターゲットスイッチが利用できない場合、PIPをアップグレードします:
LinuxまたはOS Xについて:
pip install -U pip
Windows(これは動作します 問題):
python -m pip install -U pip
の代わりに --target
オプションまたは --install-options
オプションでは、次のことがうまく機能することがわかりました(このことに関するバグに関する議論から https://github.com/pypa/pip/issues/446):
PYTHONUSERBASE=/path/to/install/to pip install --user
(または設定します PYTHONUSERBASE
コマンドを実行する前に、環境のディレクトリを使用して export PYTHONUSERBASE=/path/to/install/to
)
これは非常に便利なものを使用します --user
オプションですが、それを作るように指示します bin
, lib
, share
カスタムプレフィックスではなく、カスタムプレフィックスの下で期待する他のディレクトリ $HOME/.local
.
その後、これを追加できます PATH
, PYTHONPATH
通常のインストールディレクトリと同様のその他の変数。
また、指定する必要がある場合があることに注意してください --upgrade
と --ignore-installed
これが異なるパッケージが必要な場合は、新しいバージョンをにインストールする必要があります PYTHONUSERBASE
システムが提供するバージョンをオーバーライドするディレクトリ。
完全な例:
PYTHONUSERBASE=/opt/mysterypackage-1.0/python-deps pip install --user --upgrade numpy scipy
..インストールします scipy
と numpy
最新のバージョンをディレクトリにパッケージ化します。 PYTHONPATH
SOのように(この例ではCentos 6でBashを使用し、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の使用は、まだより優れた、よりきちんとしたソリューションです!
Pythonパッケージのインストールには、多くの場合、純粋なPythonファイルのみが含まれています。パッケージにデータ、スクリプト、または実行可能ファイルが含まれている場合、これらは純粋なPythonファイルとは異なるディレクトリにインストールされます。
パッケージにはデータ/スクリプト/実行可能ファイルがないと仮定し、Pythonファイルを使用したいと思う /python/packages/package_name
(以下のいくつかのレベルのサブディレクトリではありません /python/packages
使用するときのように --prefix
)、One Timeコマンドを使用できます。
pip install --install-option="--install-purelib=/python/packages" package_name
パッケージのすべて(またはほとんど)がそこに行く必要がある場合は、編集できます ~/.pip/pip.conf
含める:
[install]
install-option=--install-purelib=/python/packages
そうすれば、何度も何度も指定する必要があることを忘れることはできません。
追加のインストールオプションを指定しない限り、パッケージに含まれるExcecutables/Data/Scriptsは、デフォルトの場所に移動します(--prefix
/--install-data
/--install-scripts
, 、など、詳細については、 カスタムインストール オプション)。
私が望んでいた場所に正確にライブラリをインストールするために、私は端末を使用してディレクトリを望んでいた場所に移動し、その後使用されました
pip install mylibraryName -t .
このページから取ったロジック: https://cloud.google.com/appengine/docs/python/googlecloudstorageclient/download
-tオプションについては誰も言及していないようですが、それは最も簡単です:
pip install -t <direct directory> <package>
@ian bickingの答えに1つのポイントを追加するだけです:
を使用して --user
インストールされているディレクトリを指定するオプションは、リモートサーバー上に(Sudoユーザーが右にない)ホームディレクトリにPythonパッケージをインストールしたい場合にも機能します。
例えば、
pip install --user python-memcached
コマンドは、PythonPathにリストされているディレクトリの1つにパッケージをインストールします。
の新しいバージョン pip
(8以降)は直接使用できます --prefix
オプション:
pip install --prefix=$PREFIX_PATH package_name
どこ $PREFIX_PATH
LIB、BIN、およびその他のトップレベルフォルダーが配置されているインストールプレフィックスです。
これらのオプションを python3.5 および pip 9.0.3 でテストしました。
pip install --target /myfolder [パッケージ]
依存関係を含むすべてのパッケージを /myfolder にインストールします。依存パッケージが Python の他の場所にすでにインストールされていることは考慮されません。パッケージは /myfolder/[package_name] から見つかります。複数の Python バージョンがある場合、これは考慮されません (パッケージ フォルダー名に Python バージョンは含まれません)。
pip install --prefix /myfolder [パッケージ]
チェックはすでにインストールされている依存関係です。パッケージを /myfolder/lib/python3.5/site-packages/[packages] にインストールします
pip install --root /myfolder [パッケージ]
--prefix などの依存関係をチェックしますが、インストール場所は /myfolder/usr/local/lib/python3.5/site-packages/[package_name] になります。
pip install --user [パッケージ]
パッケージを $HOME にインストールします。/home/ [User ]/.local/lib/python3.5/site-packages pythonこの.localパスから自動的に検索するので、pythonpathに置く必要はありません。
=> ほとんどの場合、 --user が使用するのに最適なオプションです。何らかの理由でホームフォルダーが使用できない場合は、--prefix を使用します。
pip install packageName -t pathOfDirectory
また
pip install packageName --target pathOfDirectorty
すでに良いアドバイスに追加するために、私はインストールに問題があったので イピトン 書き込み許可がなかったとき /usr/local
.
PipはDistutilsを使用してインストールを行います このスレッド それがどのように問題を引き起こすかについて議論します sys.prefix
設定。
私の問題は、iPythonインストールが「/usr/local/share/man/man1」に書き込もうとしたときに起こりました アクセス拒否. 。インストールに失敗したため、BinディレクトリにIPythonファイルを書き込むようには見えませんでした。
「-user」を使用して機能し、ファイルは〜/.localに書き込まれました。 〜/.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にアクセスしていないマシンで同様の問題を抱えている場合に備えて、これを含めると思いました。
残念ながら、PythonでBrewを使用している場合、PIP/PIP3は非常に限られたオプションを備えています。上記のように、 - インストールオプション、 - ターゲット、ユーザーオプションはありません。
ノート PIPインストール - ユーザー
通常のPIPインストール-USERは、醸造されたPythonに対して無効になります。これは、Homebrewがパッケージのプレフィックスを設定するDistutils.cfgを書いているため、Distutilsのバグのためです。可能な回避策(実行可能なスクリプトを〜/library/python/./ binに配置します)は次のとおりです。python -m pip install --user --install-option="--prefix=" <package-name>
この行は非常に面倒だと思うかもしれません。管理にPyenvを使用することをお勧めします。使用している場合
brew upgrade python python3
皮肉なことに、あなたは実際です ダウングレード ピップ機能。
(私はこの答えを投稿します。なぜなら、私のMac OSXのPIPには - ターゲットオプションがあり、私はそれを修正するのに何時間も費やしました)
pip install /path/to/package/
今可能になりました。
これとの違いと使用 -e
また --editable
フラグはそれです -e
Pythonパスにインストールするのではなく、パッケージが保存されている場所(つまり、ダウンロードフォルダー)にリンクします。
これは、パッケージを削除/別のフォルダーに移動すると、使用できないことを意味します。
ピップ付き v1.5.6
Pythonで v2.7.3
(GNU/Linux)、オプション --root
特定のパッケージのオプションに関係なく、(明らかに)グローバルインストールのプレフィックスを指定できます。 fiを試してみてください
$ pip install --root=/alternative/prefix/path package_name
ドキュメントに従い、〜/.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
不幸なのはインストールできますが、ピップをアンインストールしようとすると、アンインストールプロセス用のパッケージはないことがわかります。