Django エラーModuleNotFoundError: No module named 'virtualenvwrapper'
こんなエラーがでた。 環境 MAC OS 10.15.2 python 3.5 Django 2.2
ModuleNotFoundError: No module named 'virtualenvwrapper'
Djangoで開発中の、デバッグ中に発生する
virtualenvwrapperとは
公式サイト virtualenvwrapper.readthedocs.io
virtualenvwrapper の特徴
すべての virtualenv 環境を一元管理できる
便利な各種コマンド
環境の切り替えがコマンドひとつでタブによるコマンド補完
カスタマイズ可能なフック
拡張機能も自由に開発可
便利な開発環境を提供してくれます。 これは従来
pip install virtualenvwrapper
でインストールできていた。
.bash_profile
//pyenv関係 export PATH="$HOME/.pyenv/shims:$PATH" export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" //システム標準のpython export PATH=$PATH:/Users/imac2/Library/Python/3.7/bin alias python="python3" export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
brew では、pyenv がインストールされている
$ brew list autoconf libimobiledevice openssl@1.1 automake libplist pkg-config aws-elasticbeanstalk libtasn1 pyenv //ここにある carthage libtool python //pythonも
pyenvとは
pythonのバージョンを同一PC内で使い分けることが可能。
pyenvで利用される shimコマンドとは
shimコマンドは、 $HOME/.pyenv/shims/ に配置されるコマンド群
- 環境のpythonのバージョンを調べて、そのバージョンを利用する
- .python-version ファイルがあればそのpythonのバージョンを利用する
これにより、環境を構築したフォルダに .python-version があれば、そのバージョンを開発に利用できる
virtualenvの構成
virtualenvのコマンドで、任意のディレクトリにPython の実行環境を作成できる pythonコマンドは、自身の親ディレクトリにある include,libディレクトリを参照する。 現在これを利用していた。
参考にさせていただきました。
この記事によると
最近のHomebrewの更新後も同じ問題が発生しました。
過去には、ほとんどの人がpip install virtualenvwrapperをシステムサイトパッケージに実行していましたが、それは機能していました。
Homebrewは、
1)システムpythonをシャドウイングしなくなり、
2)pipをpip2 / pip3にシンボリックリンクしなくなった.
上記理由により、このワークフローが中断されました。
ほとんどのユーザーは、pipが見つからないときにこれを認識し、pip2 / pip3を使用しようとします。 しかし、virtualenvwrapperはpython2 / python3ではなくpython2 / python3にインストールされるため、pip2 / pip3を使用すると問題が発生します。 そのため、virtualenvwrapperを実行してpythonを呼び出すと、システムpythonのサイトパッケージでvirtualenvwrapper / virtualenv pythonパッケージが見つかりません。のエラーが発生する。
VIRTUALENVWRAPPER_PYTHONを明示的に設定することは最もクリーンな修正である。 ふむふむ
仮想環境を利用するときのactivateは何をしているのか?
//activateより PATH="$VIRTUAL_ENV/bin:$PATH" export PATH
どこにpipでインストールされているのか pip show コマンドで調べる
//これでpipのインストール場所を調査できる $ pip show virtualenvwrapper Name: virtualenvwrapper Version: 4.8.4 Summary: Enhancements to virtualenv Home-page: https://virtualenvwrapper.readthedocs.io/ Author: Doug Hellmann Author-email: doug@doughellmann.com License: MIT //これはおかしい Location: /Users/imac2/.pyenv/versions/3.5.2/lib/python3.5/site-packages Requires: virtualenv, virtualenv-clone, stevedore
.pyenvに入っている!!
現在の開発の仮想環境にインストールされていない。 解決方法は2つ
1-今の環境を指定してVIRTUALENVWRAPPERをpipインストールする。
-t オプションでインストール可能
2-VIRTUALENVWRAPPER_PYTHONのpathを設定してあげる
.bashrc
bashrcはbashを起動するたびに毎回呼ばれる。 シェル関数を定義したりする。 .bash_profileは起動時1回しか呼ばれない。
export WORKON_HOME=$HOME/.virtualenvs source /Users/hideyasuimac2/.pyenv/shims/virtualenv/virtualenvwrapper.sh
参考にさせていただきました。