Search code examples
djangopythonanywhere

ImportError: No module named 'django_select2'


I am trying to deploy my django application on the pythonanywhere. I have install all the packages that requires for the application. I am also using django_select2 reusable app in my application.

Firstly, i activate virtual environment and install the django_select2 by this command :

$ pip install django_select2

When i execute below command

$ pip freeze 
cryptography==2.2.2                                                                                                                                                                                               
Django==2.0.7                                                                                                                                                                                                     
django-appconf==1.0.2                                                                                                                                                                                             
django-select2==6.1.0                                                                                                                                                                                             
Flask==1.0.2                                                                                                                                                                                                      
Flask-JWT==0.3.2                                                                                                                                                                                                  
Flask-SQLAlchemy==2.3.2                                                                                                                                                                                           
furl==1.2                                                                                                                                                                                                         
idna==2.7   

As you see django_select2 is also in the installed list. I also check site-packages inside my virual environment. There is also django_select2 folder.

However when i run my app it generates the ImportError: No module named 'django_select2' inside my error.log

Here is the part of my error.log

2018-07-14 14:18:53,934: Error running WSGI application
2018-07-14 14:18:53,934: ImportError: No module named 'django_select2'
2018-07-14 14:18:53,934:   File "/var/www/harunergul_pythonanywhere_com_wsgi.py", line 22, in <module>
2018-07-14 14:18:53,935:     application = get_wsgi_application()
2018-07-14 14:18:53,935: 
2018-07-14 14:18:53,935:   File "/usr/local/lib/python3.5/dist-packages/django/core/wsgi.py", line 13, in get_wsgi_application
2018-07-14 14:18:53,935:     django.setup(set_prefix=False)
2018-07-14 14:18:53,935: 
2018-07-14 14:18:53,935:   File "/usr/local/lib/python3.5/dist-packages/django/__init__.py", line 27, in setup
2018-07-14 14:18:53,935:     apps.populate(settings.INSTALLED_APPS)
2018-07-14 14:18:53,935: 
2018-07-14 14:18:53,935:   File "/usr/local/lib/python3.5/dist-packages/django/apps/registry.py", line 85, in populate
2018-07-14 14:18:53,936:     app_config = AppConfig.create(entry)
2018-07-14 14:18:53,936: 
2018-07-14 14:18:53,936:   File "/usr/local/lib/python3.5/dist-packages/django/apps/config.py", line 90, in create
2018-07-14 14:18:53,936:     module = import_module(entry)

Any suggestions? What i have missing?


Solution

  • The problem is application is not using virtual environment in this case. If we look at the below line we will see /usr/local/... . So the application is using pythonanywhere.com default environment.

    File "/usr/local/lib/python3.5/dist-packages/django/core/wsgi.py", line 13,
    

    which means whatever we install in our virtualenv has no effect on default server. In pythonanywhere.com there is virtualenv menu, be sure if you input correct path info in this menu.