title: Error running Python 3.4 with PostgreSQL (psycopg2) and Django
body: <p>So if I start Python 2.7's shell with <code>python</code>, and run <code>import psycopg2</code>, I don't receive any errors. However, if I try to run <code>import psycopg2</code> in Python 3.4's shell, I get: <code>ImportError: No module named 'psycopg2'</code>. On the other hand, importing django works fine on both shells (after using pip3 to install it).</p>
  
  <p>Secondly, if I run <code>python3 manage.py runserver</code>, I get an error (see below), whereas I don't if I use just <code>python</code>. I think this is because of the first problem I described but I'm not sure (sorry if this is a stupid question, I'm really new to Django - trying to get through the tutorial).</p>
  
  <pre><code>File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 23, in &lt; module &gt;
  import psycopg2 as Database
  ImportError: No module named 'psycopg2'
  
  During handling of the above exception, another exception occurred:
  
  Traceback(most recent call last):
  File "manage.py", line 10, in &lt; module &gt;
  execute_from_command_line(sys.argv)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
  utility.execute()
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/core/management/__init__.py", line 354, in execute
  django.setup()
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/__init__.py", line 21, in setup
  apps.populate(settings.INSTALLED_APPS)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/apps/registry.py", line 108, in populate
  app_config.import_models(all_models)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/apps/config.py", line 202, in import_models
  self.models_module = import_module(models_module_name)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/importlib/__init__.py", line 109, in import_module   
  return _bootstrap._gcd_import(name[level: ], package, level)
  File "&lt;frozen importlib._bootstrap&gt;", line 2254, in _gcd_import
  File "&lt;frozen importlib._bootstrap&gt;", line 2237, in _find_and_load
  File "&lt;frozen importlib._bootstrap&gt;", line 2226, in _find_and_load_unlocked
  File "&lt;frozen importlib._bootstrap&gt;", line 1200, in _load_unlocked
  File "&lt;frozen importlib._bootstrap&gt;", line 1129, in _exec
  File "&lt;frozen importlib._bootstrap&gt;", line 1471, in exec_module
  File "&lt;frozen importlib._bootstrap&gt;", line 321, in _call_with_frames_removed
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/contrib/auth/models.py", line 40, in &lt; module &gt;
  class Permission(models.Model):
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/db/models/base.py", line 122, in __new__
  new_class.add_to_class('_meta', Options(meta, * * kwargs))
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/db/models/base.py", line 297, in add_to_class
  value.contribute_to_class(cls, name)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/db/models/options.py", line 166, in contribute_to_class
  self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/db/__init__.py", line 40, in __getattr__
  return getattr(connections[DEFAULT_DB_ALIAS], item)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/db/utils.py", line 242, in __getitem__
  backend = load_backend(db['ENGINE'])
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/db/utils.py", line 108, in load_backend
  return import_module('%s.base' % backend_name)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/importlib/__init__.py", line 109, in import_module
  return _bootstrap._gcd_import(name[level: ], package, level)
  File "&lt;frozen importlib._bootstrap&gt;", line 2254, in _gcd_import
  File "&lt;frozen importlib._bootstrap&gt;", line 2237, in _find_and_load
  File "&lt;frozen importlib._bootstrap&gt;", line 2226, in _find_and_load_unlocked
  File "&lt;frozen importlib._bootstrap&gt;", line 1200, in _load_unlocked
  File "&lt;frozen importlib._bootstrap&gt;", line 1129, in _exec
  File "&lt;frozen importlib._bootstrap&gt;", line 1471, in exec_module
  File "&lt;frozen importlib._bootstrap&gt;", line 321, in _call_with_frames_removed
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 27, in &lt; module &gt;
  raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e)
  django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: No module named 'psycopg2'
  </code></pre>
  
  <p>What can I do to fix it?</p>
  
  <p>Additionally, I'm super confused on this whole Python 2 vs 3 business with Django (sorry again if this is a really basic question). When you run <code>django-admin.py startproject theproject</code>, how do you specify which version of Python you want to use with Django? Is it as simple as just writing your code in Python 3 and running everything with <code>python3</code> as opposed to <code>python</code>?</p>