web-dev-qa-db-ja.com

virtualenvの代わりにグローバルサイトパッケージにインストールするpip

pip3を使用してvirtualenvにパッケージをインストールすると、virtualenvフォルダーではなくグローバルsite-packagesフォルダーにパッケージがインストールされます。 OS X Mavericks(10.9.1)でPython3とvirtualenvを設定する方法は次のとおりです。

Homebrewを使用してPython3をインストールしました。

Ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
brew install python3 --with-brewed-openssl

$PATH.bash_profile変数を変更しました;次の行を追加しました。

export PATH=/usr/local/bin:$PATH

which python3を実行すると、/usr/local/bin/python3が返されます(シェルの再起動後)。

注:which python3は引き続き/ usr/bin/pythonを返します。

pip3を使用してvirtualenvをインストールしました:

pip3 install virtualenv

次に、新しいvirtualenvを作成してアクティブにします。

virtualenv testpy3 -p python3
cd testpy3
source bin/activate

注:-p python3を指定しない場合、virtualenvのbinフォルダーからpipが欠落します。

which pipwhich pip3の両方を実行すると、virtualenvフォルダーが返されます。

/Users/kristof/VirtualEnvs/testpy3/bin/pip3

今、私がインストールしようとすると、例えばアクティブ化されたvirtualenvでpipを使用してマークダウンすると、pipはvirtualenvのsite-packagesフォルダーではなく、グローバルsite-packagesフォルダーにインストールされます。

pip install markdown

pip listを実行すると以下が返されます。

Markdown (2.3.1)
pip (1.4.1)
setuptools (2.0.1)
virtualenv (1.11)

/Users/kristof/VirtualEnvs/testpy3/lib/python3.3/site-packagesの内容:

__pycache__/
_markerlib/
easy_install.py
pip/
pip-1.5.dist-info/
pkg_resources.py
setuptools/
setuptools-2.0.2.dist-info/

/usr/local/lib/python3.3/site-packagesの内容:

Markdown-2.3.1-py3.3.Egg-info/
__pycache__/
easy-install.pth
markdown/
pip-1.4.1-py3.3.Egg/
setuptools-2.0.1-py3.3.Egg
setuptools.pth
virtualenv-1.11-py3.3.Egg-info/
virtualenv.py
virtualenv_support/

ご覧のとおり、globalsite-packagesフォルダーにはMarkdownが含まれていますが、virtualenvフォルダーには含まれていません。

注:以前に別のVMにPython2とPython3をインストールし( これら の指示に従います)、Python3でも同じ問題が発生しました。ただし、Python2ベースのvirtualenvにパッケージをインストールしても問題なく動作しました。

どんなヒント、ヒントなども大歓迎です。

81
ƘɌỈSƬƠƑ

おかしなことはこれを持ち出しました、私はまったく同じ問題を抱えていました。私は最終的にそれを解決しましたが、何が原因であるのかまだわかりません。

bin/pipおよびbin/activateスクリプトを確認してください。 bin/pipで、Shebangを見てください。それが正しいか?そうでない場合は、修正します。次に、42の〜bin/activate行で、virtualenvパスが正しいかどうかを確認します。このようになります

VIRTUAL_ENV="/Users/me/path/to/virtual/environment"

間違っている場合は、deactivateを修正し、次に. bin/activateを修正します。相互の問題が同じ原因である場合は、機能するはずです。それでも解決しない場合は、とにかく正しい軌道に乗っています。私はあなたと同じ問題解決ルーチンを実行しました。which pipを何度も繰り返し、スタックトレースをたどります。

絶対に確認してください

/Users/kristof/VirtualEnvs/testpy3/bin/pip3

は、あなたが望むものであり、同じ名前の別のテストプロジェクトを参照していません(私はその問題を抱えていて、それがどのように始まったのかわかりません。私の疑いは複数のvirtualenvを同時に実行しています)。

これが機能しない場合、Joe Hollowayが言ったように、一時的な解決策があります。

完全なパスでvirtualenvのpipを実行するだけで(つまり、実行可能パスの検索に依存しないでください)、環境をアクティブ化する必要さえありません。それは正しいことをします。

おそらく理想的ではありませんが、ピンチで動作するはずです。

私の元の質問へのリンク:

パッケージをグローバルにインストールしようとするVirtualEnv/Pip

77
Chase Ries

私にとって、これはpipやvirtualenvの問題ではありませんでした。これはpythonの問題でした。オンラインでチュートリアルを実行した後、$ PYTHONPATHを〜/ .bash_profile(または〜/ .bashrc)で手動で設定しました。手動で設定された$ PYTHONPATHは、おそらく許可されるはずなので、virtualenvで使用できました。

さらに、add2virtualenvは、virtualenv内で何らかの理由でプロジェクトパスを$ PYTHONPATHに追加していませんでした。

まだ立ち往生しているかもしれない人のための分岐パスだけです!乾杯!

15
e.thompsy

私は同じ問題を抱えていたので、venvディレクトリを削除して再作成することで解決しました!

deactivate (if venv is activated first deactivate it)
rm -rf venv
virtualenv -p python3 venv
. ENV/bin/activate
pip3 install -r requirements.txt

今ではすべてが魅力のように機能します。

8
Reza A. Ahmadi

私もこの問題を抱えていました。 Mavericks MacのPython 3.3仮想環境内のpip install <package_name>ディレクトリから/binを呼び出すと、PythonパッケージがPython 2.7グローバルサイトパッケージにインストールされました。ディレクトリ。これは、$ PATHがpipを含むディレクトリから始まったという事実にもかかわらずでした。奇妙な。これはCentOSでは発生しません。私にとって、ソリューションはpipではなくpip3を呼び出していました。 ez_setupで仮想環境内にpipをインストールしたとき、3つの「pip」実行可能ファイルが/binディレクトリにインストールされていました-pippip3、およびpip3.3。興味深いことに、3つのファイルはすべてまったく同じでした。 pip3 install <package_name>を呼び出すと、Pythonパッケージがローカルのsite-packagesディレクトリに正しくインストールされました。仮想環境へのフルパス名でpipを呼び出すことも正しく機能しました。私のMacが期待どおりに$ PATHを使用していない理由を知りたいと思います。

4
kme757

Virtualenv内からpythonパッケージをインストールしているときに同じ問題にぶつかりました。私の場合の根本原因は異なっていました。 virtualenv内から、私は(Ubuntuの習慣から)以下を行いました。

Sudo easy_install -Z <package>

これにより、bin/pip Shebangが無視され、ルートの非virtualenv pythonを使用してグローバルサイトパッケージにインストールされました。仮想環境があるため、「Sudo」なしでパッケージをインストールする必要があります

4
Alok Wadhwa

pip==8.0.0に更新した後、同様の問題が発生しました。不正なパスを追跡するために、pipのデバッグに頼らなければなりませんでした。

結局のところ、私のプロファイルディレクトリには、いくつかの空のパス値を持つdistutils構成ファイルがありました。これにより、適切な仮想環境(私の場合は/lib/site-packages)ではなく、すべてのパッケージが同じルートディレクトリにインストールされていました。

構成ファイルがどのようにそこに到達したのか、空の値がどのようにあったのかはわかりませんが、pipを更新した後に開始されました。

他の誰かが同じ問題に出くわした場合、pipがデフォルトの分散構成に戻ったため、ファイル~/.pydistutils.cfgを削除する(または空の構成パスを削除する)だけで私の環境の問題が修正されました。

3
Josiah Ruddell

最初に確認することは、pipが解決する場所です:

which pip

あなたがvirtualenvにいるなら、これはあなたに次のようなものを与えると期待するでしょう:

/path/to/virtualenv/.name_of_virtualenv/bin/pip

ただし、何らかの理由でシステムpipに解決される場合があります。たとえば、virtualenv内からこれを見ることができます(これは悪いです):

/ usr/local/bin/pip(または、virtualenvパスにないもの)。

これを解決するには、pipconfigをチェックインします。

~/.pipconf
~/.conf/pip
/etc/pip.conf

Pythonパスまたはpipパスを強制しているものがないことを確認します(これにより修正されました)。

次に、新しいターミナルを起動して、virtualenvを再構築します(削除してから再度作成します)

2
Sami Start

仮想環境を作成した後、yourVirtualEnvName\Scriptsにあるpipを使用してみてください

仮想環境のLib\site-packages内にパッケージをインストールする必要があります

1
Bogumil

上記の解決策はどれも私にとってはうまくいきませんでした。

私のvenvはアクティブでした。 pip -Vおよびwhich pipは正しいvirtualenvパスを提供しましたが、venvをアクティブにしてパッケージをpip install- edしたとき、pip freezeは空のままでした。

環境変数もすべて正しかった。

最後に、pipを変更してvirtualenvを削除しました。

easy_install pip==7.0.2

pip install pip==10

Sudo pip uninstall virtualenv

Venvを再インストールします。

Sudo pip install virtualenv

Venvを作成します。

python -m virtualenv venv_name_here

そして、すべてのパッケージが再びvenvに正しくインストールされました。

1
jturi

今日同じ問題に出くわした。 Sudo easy_install pip(OSX/Max)でpipをグローバルに再インストールし、Sudo virtualenv nameOfVEnvでvirtualenvを再度作成しました。次に、新しいvirtualenvをアクティブにした後、pipコマンドは期待どおりに機能しました。

最初のvirtualenvの作成でSudoを使用したとは思わないので、virtualenv内からpipにアクセスできない理由である可能性があり、この修正前にpip2にアクセスできました奇妙なことでしたが。

1
Erion V

仮想環境:を使用する際の頭痛を避けることができるいくつかのプラクティスがあります

  • プロジェクト用のフォルダーを作成します。
  • このフォルダー内にVirtualenvプロジェクトを作成します。
  • プロジェクトの環境をアクティブにした後、「Sudopip install package」を使用しないでください。
  • 作業が終了したら、常に環境を「deactivate」にします。
  • プロジェクトフォルダの名前を変更しないでください。


このプラクティスのより良い表現のために、ここにシミュレーションがあります:


プロジェクト/環境用のフォルダーを作成する

$ mkdir venv

作成環境

$ cd venv/ 

$ virtualenv google_drive
New python executable in google_drive/bin/python
Installing setuptools, pip...done.

環境を活性化する

$ source google_drive/bin/activate

パッケージのインストール

(google_drive) $ pip install PyDrive
Downloading/unpacking PyDrive
Downloading PyDrive-1.3.1-py2-none-any.whl
...
...
...    
Successfully installed PyDrive PyYAML google-api-python-client oauth2client six uritemplate httplib2 pyasn1 rsa pyasn1-modules
Cleaning up...

環境内で利用可能なパッケージ

(google_drive) $ python
Python 2.7.6 (default, Oct 26 2016, 20:30:19) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import pydrive.auth
>>>  
>>> gdrive = pydrive.auth.GoogleAuth()
>>>

環境を無効にする

(google_drive) $ deactivate 

$ 

パッケージは環境外では利用できません

(google_drive) $ python
Python 2.7.6 (default, Oct 26 2016, 20:32:10) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import pydrive.auth
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named pydrive.auth
>>> 

ノート:

なぜsudoを使わないのですか?

Virtualenvは、まったく新しい環境を作成し、$ PATHおよびその他の変数と設定を定義します。 Sudo pip install packageを使用すると、Virtualenvをrootとして実行し、作成された環境全体をエスケープしてから、パッケージをグローバルサイトパッケージにインストールします。 プロジェクトフォルダー内ではなく仮想環境がある場所ですが、環境はアクティブ化されています。

プロジェクトのフォルダーの名前を変更した場合(承認済みの回答に記載されているとおり)...

...プロジェクトのbinディレクトリ内のいくつかのファイルからいくつかの変数を調整する必要があります。

例えば:

ビン/ピップ、ライン1(シェバン)

bin/activate、行42(VIRTUAL_ENV)

1
ivanleoncz

仮想環境のbinディレクトリに移動し、次のように記述します。

./pip3 install <package-name>
1
Taohidul Islam

この問題は、virtualenvインスタンスを作成してから親フォルダー名を変更すると発生します。

1
Giordhano

この問題がありました。問題の原因となったフォルダー名の1つにスペースがあったことが判明しました。スペースを削除し、venvを使用して削除し、再インスタンス化しましたが、すべてうまくいきました。

1
normonics

上記の多くの良い議論が、virtualenvの例が使用されました。 「conda」は現在、virtualenvを管理するための推奨ツールであるため、次のようにconda envでpipを実行する手順をまとめました。

Envの名前としてpy36rを使用し、/ opt/conda/envsはenvのプレフィックスです):

$ source /opt/conda/etc/profile.d/conda.sh#既に行われている場合はスキップ

$ conda py36rをアクティブにします

$ pip install pkg_xyz

$ピップリスト| grep pkg_xyz

実行されるpipは/ opt/conda/envs/py36r/bin/pip(/ opt/conda/bin/pipではない)にある必要があることに注意してください。

または、conda activateを使用せずに次を実行することもできます。

$/opt/conda/envs/py36r/bin/pip

また、condaを使用してインストールする場合、アクティベートせずにインストールできます。

$ conda install -n py36r pkg_abc ...

0
HAltos

--python=python3.6フラグを使用してvirtualenvをインストールしたときに起こりましたが、その後pip2 installを使用しようとしました。
使用するバージョンのフラグを使用してvirtualenvを作成すると、権限の問題が解決します。確認するには、which pipまたはwhich pip2またはwhich pip3(選択に応じて異なります)を試してください。使用するpipvenvへのパスではないことを示している場合、これが問題です。

0
techkuz

なんらかの理由で、ubuntuシステムにpipを介してパッケージをインストールするために「Sudo」を使用する必要があります。これにより、パッケージがグローバルサイトパッケージにインストールされます。将来この問題に直面する可能性がある人のために、これをここに置いてください。

0
sujithvemi

私もこの問題を抱えていました。 Sudo pip installを呼び出すと、Pythonパッケージがグローバルサイトパッケージディレクトリにインストールされ、pip installを呼び出すと正常に機能しました。したがって、virtualenvではSudoを使用しません。

0
Petru

Divioのインストール後にこの問題が発生しました。ターミナルを起動するときに、何らかの方法でPATHまたは環境が変更されました。

この場合の解決策は、元のpyenv/pyenv-virtualenv状態に戻すためにすでにセットアップされているsource ~/.bash_profileを実行することでした。

0
davefelce

タイトルからまさに問題があり、それを解決しました。 PATHを削除した後、Pipはvenv site-packagesにインストールを開始しました。最初はローカルの〜/ binディレクトリへのパスがありました。

だから、私のアドバイス:環境変数を徹底的にチェックして、「ゴミ」や非標準のものを探します。残念ながら、virtualenvはそれらに敏感な場合があります。

幸運を!

0
Benkevitch

私はこの問題を抱えていました。上記の解決策をすべて試した後、すべてを削除し、新たに始めました。

私の場合、仮想環境が存在するフォルダーの1つを作成する際にSudoを使用し、Sudoはrootに特権を与えました

私はとても怒っていました!しかし、うまくいきました!

0
KingNonso

プロジェクトフォルダ内のprefix = ""を含むsetup.cfgファイル

プロジェクトフォルダーの外部のvirtualenvでpip installを実行すると、内部からpipにデフォルトの「/」の空のプレフィックスを使用するように指示されていた

ファイルを削除すると修正されました

0
Ami Mahloof

For Python 3ers

更新してみてください。私はこれとまったく同じ問題を抱えて、チェイスの答えを試みましたが、成功しませんでした。これをリファクタリングする最も簡単な方法は、可能であればPython Minor/Patchバージョンを更新することです。 3.5.1を実行していることに気付き、3.5.2に更新しました。 Pyvenvは再び動作します。

0
ham-sandwich

これは、間違った場所にvirtualenvを作成したときに起こりました。それから、ディレクトリを問題なく別の場所に移動できると考えました。重要だった。

mkdir ~/projects
virtualenv myenv
cd myenv
git clone [my repository]

なんてこった、virtualenvを作成して担当者のクローンを作成する前にprojectsにcdするのを忘れていた。まあ、私は怠けすぎて破壊して再作成できません。問題なくディレクトリを移動します。

cd ~
mv myenv projects
cd projects/myenv/myrepo
pip install -r requirements

いいえ、より多くの許可が必要です、何ですか?私はそれが奇妙だと思ったが、Sudo AWAY!次に、パッケージをグローバルな場所にインストールしました。

私が学んだ教訓は、virtualenv dirを削除するだけでした。動かさないでください。

0
teewuane

同じ問題。 Linux rpmからインストールされたPython3.5およびpip 8.0.2。

主な原因が見つからなかったため、適切な答えを出すことができませんでした。複数の原因が考えられます。

ただし、私の観察と回避策を共有するのに役立つことを願っています。

  1. pyvenv with --system-site-packages

    • ./binにはpipは含まれません、pipはシステムサイトパッケージから利用可能です
    • パッケージはグローバルにインストールされます(BUG?
  2. pyvenvなし--system-site-packages

    • pip./binにインストールされますが、異なるバージョンです(ensurepipから)
    • パッケージは仮想環境内にインストールされます(OK

--system-site-packagesを使用したpyvenvの明らかな回避策:

  • --system-site-packagesオプションなしで作成します
  • include-system-site-packages = falseファイルでpyvenv.cfgtrueに変更します
0
VPfB

また、virtualenvへのパスを何らかの形で変更していないことも確認する価値があります。

その場合、bin/pipの最初の行(および残りの実行可能ファイル)のパスが正しくありません。

これらのファイルを編集してパスを修正するか、virtualenvを削除して再度インストールすることができます。

0
Memos