私は明らかな答えは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
がおそらく必要なものですが、もっとたくさんのオプションがあります)。
--target スイッチは、あなたが探しているものです。
pip install --target=d:\somewhere\other\than\the\default package_name
しかし、その場所から実際にそれらを使用するには、PYTHONPATH
にd:\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
--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
ではなくカスタムプレフィックスの下でbin
、lib
、share
、その他のディレクトリを作るように指示します。
その後、通常のインストールディレクトリと同じように、これをPATH
、PYTHONPATH
、その他の変数に追加できます。
これが依存するパッケージでシステム提供のバージョンを上書きするために新しいバージョンをPYTHONUSERBASE
ディレクトリにインストールする必要がある場合は、--upgrade
および--ignore-installed
オプションも指定する必要があるかもしれません。
完全な例:
PYTHONUSERBASE=/opt/mysterypackage-1.0/python-deps pip install --user --upgrade numpy scipy
.. scipy
とnumpy
パッケージの最新バージョンをディレクトリにインストールするには、そのディレクトリを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を使用することは、まだより良い、より良い解決策です!
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はデフォルトの場所に移動します。
ライブラリを希望の場所にピップインストールするには、ターミナルがあるディレクトリを希望する場所に移動してから使用しました。
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にリストされているディレクトリのいずれかにパッケージをインストールします。
新しいバージョンのpip
(8以降)では、 --prefix
オプション を直接使用できます。
pip install --prefix=$PREFIX_PATH package_name
$PREFIX_PATH
は、lib、bin、およびその他の最上位フォルダが配置されるインストールプレフィックスです。
pip install packageName -t pathOfDirectory
または
pip install packageName --target pathOfDirectorty
これらのオプションを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を使用してください。
/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にアクセスできないマシン上で同様の問題を抱えている場合に備えて、私はこれを含めると思いました。
私はドキュメンテーションに従い、〜/ .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をアンインストールしようとするとアンインストールプロセスのためのそのようなパッケージがないことを教えてくれます....だからまだ何か間違っているがパッケージは事前定義された場所に行きます。
あなたが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オプションがないため、この回答を投稿しています。修正に何時間も費やしました)
Python v1.5.6
(GNU/Linux)のpip v2.7.3
では、オプション--root
は、(明らかに)特定のパッケージのオプションに関係なく、グローバルなインストールプレフィックスを指定することを可能にします。試してみてください、
$ pip install --root=/alternative/prefix/path package_name
pip install /path/to/package/
今は可能です。
これと-e
または--editable
フラグを使うことの違いは、-e
があなたのpythonパスにそれをインストールするのではなく、パッケージが保存されている場所(すなわちダウンロードフォルダ)にリンクすることです。
つまり、パッケージを削除/別のフォルダに移動した場合、そのパッケージを使用することはできません。