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 pip
とwhich 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にパッケージをインストールしても問題なく動作しました。
どんなヒント、ヒントなども大歓迎です。
おかしなことはこれを持ち出しました、私はまったく同じ問題を抱えていました。私は最終的にそれを解決しましたが、何が原因であるのかまだわかりません。
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を実行するだけで(つまり、実行可能パスの検索に依存しないでください)、環境をアクティブ化する必要さえありません。それは正しいことをします。
おそらく理想的ではありませんが、ピンチで動作するはずです。
私の元の質問へのリンク:
私にとって、これはpipやvirtualenvの問題ではありませんでした。これはpythonの問題でした。オンラインでチュートリアルを実行した後、$ PYTHONPATHを〜/ .bash_profile(または〜/ .bashrc)で手動で設定しました。手動で設定された$ PYTHONPATHは、おそらく許可されるはずなので、virtualenvで使用できました。
さらに、add2virtualenv
は、virtualenv内で何らかの理由でプロジェクトパスを$ PYTHONPATHに追加していませんでした。
まだ立ち往生しているかもしれない人のための分岐パスだけです!乾杯!
私は同じ問題を抱えていたので、venvディレクトリを削除して再作成することで解決しました!
deactivate (if venv is activated first deactivate it)
rm -rf venv
virtualenv -p python3 venv
. ENV/bin/activate
pip3 install -r requirements.txt
今ではすべてが魅力のように機能します。
私もこの問題を抱えていました。 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
ディレクトリにインストールされていました-pip
、pip3
、およびpip3.3
。興味深いことに、3つのファイルはすべてまったく同じでした。 pip3 install <package_name>
を呼び出すと、Pythonパッケージがローカルのsite-packagesディレクトリに正しくインストールされました。仮想環境へのフルパス名でpip
を呼び出すことも正しく機能しました。私のMacが期待どおりに$ PATHを使用していない理由を知りたいと思います。
Virtualenv内からpythonパッケージをインストールしているときに同じ問題にぶつかりました。私の場合の根本原因は異なっていました。 virtualenv内から、私は(Ubuntuの習慣から)以下を行いました。
Sudo easy_install -Z <package>
これにより、bin/pip Shebangが無視され、ルートの非virtualenv pythonを使用してグローバルサイトパッケージにインストールされました。仮想環境があるため、「Sudo」なしでパッケージをインストールする必要があります
pip==8.0.0
に更新した後、同様の問題が発生しました。不正なパスを追跡するために、pipのデバッグに頼らなければなりませんでした。
結局のところ、私のプロファイルディレクトリには、いくつかの空のパス値を持つdistutils構成ファイルがありました。これにより、適切な仮想環境(私の場合は/lib/site-packages
)ではなく、すべてのパッケージが同じルートディレクトリにインストールされていました。
構成ファイルがどのようにそこに到達したのか、空の値がどのようにあったのかはわかりませんが、pipを更新した後に開始されました。
他の誰かが同じ問題に出くわした場合、pipがデフォルトの分散構成に戻ったため、ファイル~/.pydistutils.cfg
を削除する(または空の構成パスを削除する)だけで私の環境の問題が修正されました。
最初に確認することは、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を再構築します(削除してから再度作成します)
仮想環境を作成した後、yourVirtualEnvName\Scriptsにあるpipを使用してみてください
仮想環境のLib\site-packages内にパッケージをインストールする必要があります
上記の解決策はどれも私にとってはうまくいきませんでした。
私の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に正しくインストールされました。
今日同じ問題に出くわした。 Sudo easy_install pip
(OSX/Max)でpipをグローバルに再インストールし、Sudo virtualenv nameOfVEnv
でvirtualenvを再度作成しました。次に、新しいvirtualenvをアクティブにした後、pip
コマンドは期待どおりに機能しました。
最初のvirtualenvの作成でSudo
を使用したとは思わないので、virtualenv内からpip
にアクセスできない理由である可能性があり、この修正前にpip2
にアクセスできました奇妙なことでしたが。
仮想環境:を使用する際の頭痛を避けることができるいくつかのプラクティスがあります
このプラクティスのより良い表現のために、ここにシミュレーションがあります:
$ 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
>>>
Virtualenvは、まったく新しい環境を作成し、$ PATHおよびその他の変数と設定を定義します。 Sudo pip install packageを使用すると、Virtualenvをrootとして実行し、作成された環境全体をエスケープしてから、パッケージをグローバルサイトパッケージにインストールします。 プロジェクトフォルダー内ではなく仮想環境がある場所ですが、環境はアクティブ化されています。
...プロジェクトのbinディレクトリ内のいくつかのファイルからいくつかの変数を調整する必要があります。
例えば:
ビン/ピップ、ライン1(シェバン)
bin/activate、行42(VIRTUAL_ENV)
仮想環境のbinディレクトリに移動し、次のように記述します。
./pip3 install <package-name>
この問題は、virtualenvインスタンスを作成してから親フォルダー名を変更すると発生します。
この問題がありました。問題の原因となったフォルダー名の1つにスペースがあったことが判明しました。スペースを削除し、venvを使用して削除し、再インスタンス化しましたが、すべてうまくいきました。
上記の多くの良い議論が、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 ...
--python=python3.6
フラグを使用してvirtualenvをインストールしたときに起こりましたが、その後pip2 install
を使用しようとしました。
使用するバージョンのフラグを使用してvirtualenvを作成すると、権限の問題が解決します。確認するには、which pip
またはwhich pip2
またはwhich pip3
(選択に応じて異なります)を試してください。使用するpip
がvenv
へのパスではないことを示している場合、これが問題です。
なんらかの理由で、ubuntuシステムにpipを介してパッケージをインストールするために「Sudo」を使用する必要があります。これにより、パッケージがグローバルサイトパッケージにインストールされます。将来この問題に直面する可能性がある人のために、これをここに置いてください。
私もこの問題を抱えていました。 Sudo pip install
を呼び出すと、Pythonパッケージがグローバルサイトパッケージディレクトリにインストールされ、pip install
を呼び出すと正常に機能しました。したがって、virtualenvではSudoを使用しません。
Divioのインストール後にこの問題が発生しました。ターミナルを起動するときに、何らかの方法でPATHまたは環境が変更されました。
この場合の解決策は、元のpyenv/pyenv-virtualenv状態に戻すためにすでにセットアップされているsource ~/.bash_profile
を実行することでした。
タイトルからまさに問題があり、それを解決しました。 PATHを削除した後、Pipはvenv site-packagesにインストールを開始しました。最初はローカルの〜/ binディレクトリへのパスがありました。
だから、私のアドバイス:環境変数を徹底的にチェックして、「ゴミ」や非標準のものを探します。残念ながら、virtualenvはそれらに敏感な場合があります。
幸運を!
私はこの問題を抱えていました。上記の解決策をすべて試した後、すべてを削除し、新たに始めました。
私の場合、仮想環境が存在するフォルダーの1つを作成する際にSudo
を使用し、Sudoはrootに特権を与えました
私はとても怒っていました!しかし、うまくいきました!
プロジェクトフォルダ内のprefix = ""を含むsetup.cfgファイル
プロジェクトフォルダーの外部のvirtualenvでpip installを実行すると、内部からpipにデフォルトの「/」の空のプレフィックスを使用するように指示されていた
ファイルを削除すると修正されました
For Python 3ers
更新してみてください。私はこれとまったく同じ問題を抱えて、チェイスの答えを試みましたが、成功しませんでした。これをリファクタリングする最も簡単な方法は、可能であればPython Minor/Patchバージョンを更新することです。 3.5.1を実行していることに気付き、3.5.2に更新しました。 Pyvenvは再び動作します。
これは、間違った場所に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を削除するだけでした。動かさないでください。
同じ問題。 Linux rpm
からインストールされたPython3.5およびpip 8.0.2。
主な原因が見つからなかったため、適切な答えを出すことができませんでした。複数の原因が考えられます。
ただし、私の観察と回避策を共有するのに役立つことを願っています。
pyvenv
with --system-site-packages
./bin
にはpip
は含まれません、pip
はシステムサイトパッケージから利用可能ですpyvenv
なし--system-site-packages
pip
は./bin
にインストールされますが、異なるバージョンです(ensurepip
から)--system-site-packages
を使用したpyvenv
の明らかな回避策:
--system-site-packages
オプションなしで作成しますinclude-system-site-packages = false
ファイルでpyvenv.cfg
をtrue
に変更しますまた、virtualenvへのパスを何らかの形で変更していないことも確認する価値があります。
その場合、bin/pip
の最初の行(および残りの実行可能ファイル)のパスが正しくありません。
これらのファイルを編集してパスを修正するか、virtualenvを削除して再度インストールすることができます。