python

condaで仮想環境をactivateしても反映されない場合の対処

Django用のプロジェクトを作成時に、migrateした時に下記のようなエラーが発生した。

ImportError: Couldn’t import Django. Are you sure it’s installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?

色々と確認してみた

確認項目

・conda activateで切り替わっているのは確認済み

・djangoもインストール済

djangoのインストール先を確認してみる

> pip show django

このコマンドでLocationの行にインストール先が出るので、その内容をみてみましょう。

  • Name: Django
  • Version: 3.0.7
  • Summary: A high-level Python Web framework that encourages rapid development and clean, pragmatic design.
  • Home-page: https://www.djangoproject.com/
  • Author: Django Software Foundation
  • Author-email: foundation@djangoproject.com
  • License: BSD
  • Location: /opt/anaconda3/envs/xxxxxx/lib/python3.8/site-packages
  • Requires: pytz, asgiref, sqlparse
  • Required-by: djangorestframework-simplejwt, django-ses, django-cors-headers

xxxxxxの箇所には、仮想環境名が入ります。

mac環境の方であれば、pathは基本同じです。

pipでのpathとpythonとの参照先にズレがあるか確認する。

import sys;
print(sys.path)

この形で表示されれば問題ない。

[”, ‘/opt/anaconda3/envs/xxxxxx/lib/python38.zip’, ‘/opt/anaconda3/envs/xxxxxx/lib/python3.8’, ‘/opt/anaconda3/envs/xxxxxx/lib/python3.8/lib-dynload’, ‘/opt/anaconda3/envs/xxxxxx/lib/python3.8/site-packages’]

以下の形だとローカル環境のpythonが参照されている→再起動をする必要あり

[”, ‘/usr/local/Cellar/python@3.9/3.9.1_6/Frameworks/Python.framework/Versions/3.9/lib/python39.zip’, ‘/usr/local/Cellar/python@3.9/3.9.1_6/Frameworks/Python.framework/Versions/3.9/lib/python3.9′, ‘/usr/local/Cellar/python@3.9/3.9.1_6/Frameworks/Python.framework/Versions/3.9/lib/python3.9/lib-dynload’, ‘/usr/local/lib/python3.9/site-packages’, ‘/usr/local/Cellar/protobuf/3.14.0/libexec/lib/python3.9/site-packages’]

再起動してもダメな場合には、仮想環境を作り直します。