2015-01-08 2 views
1

python으로 파이썬 2.7의 쉘을 시작한 후 import psycopg2을 실행해도 오류가 발생하지 않습니다. 그러나 파이썬 3.4의 쉘에서 import psycopg2을 실행하려고하면 다음과 같이 나타납니다 : ImportError: No module named 'psycopg2'. 반면에 django를 가져 오는 것은 두 셸 모두에서 제대로 작동합니다 (pip3을 사용하여 설치 한 후).PostgreSQL (psycopg2) 및 Django로 Python 3.4를 실행하는 중에 오류가 발생했습니다.

둘째, python3 manage.py runserver을 실행하면 오류가 발생합니다 (아래 참조). 단, python 만 사용하면 오류가 발생합니다. 나는 이것이 내가 설명한 첫 번째 문제로 생각한다. 그러나 나는 확신 할 수 없다. (이것이 바보 같은 질문이라면 유감스럽게 생각한다. 나는 장고를 처음 접했을 때 - 튜토리얼을 통해 얻으 려한다).

File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 23, in <module> 
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 <module> 
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 "<frozen importlib._bootstrap>", line 2254, in _gcd_import 
File "<frozen importlib._bootstrap>", line 2237, in _find_and_load 
File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked 
File "<frozen importlib._bootstrap>", line 1200, in _load_unlocked 
File "<frozen importlib._bootstrap>", line 1129, in _exec 
File "<frozen importlib._bootstrap>", line 1471, in exec_module 
File "<frozen importlib._bootstrap>", 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 <module> 
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 "<frozen importlib._bootstrap>", line 2254, in _gcd_import 
File "<frozen importlib._bootstrap>", line 2237, in _find_and_load 
File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked 
File "<frozen importlib._bootstrap>", line 1200, in _load_unlocked 
File "<frozen importlib._bootstrap>", line 1129, in _exec 
File "<frozen importlib._bootstrap>", line 1471, in exec_module 
File "<frozen importlib._bootstrap>", 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 <module> 
raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e) 
django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: No module named 'psycopg2' 

수정하려면 어떻게해야합니까?

또한이 전체 Python 2 vs 3 비즈니스를 장고와 혼동스럽게 생각합니다. (이것이 정말로 기본적인 질문이라면 다시 미안합니다.) django-admin.py startproject theproject을 실행할 때 장고에 사용할 파이썬 버전을 어떻게 지정합니까? Python 3에서 코드를 작성하고 python3python이 아닌 모든 것을 실행하는 것만 큼 간단합니까?

+3

'pip3 install psycopg2'를 이미 실행 했습니까? 어떤 오류가 있었습니까? – Alasdair

답변

2

pip3 install psycopg2를 실행했는지 확인하십시오.

기본적으로 django-admin.py은 Python 2를 사용하여 실행됩니다. 프로젝트의 폴더 레이아웃을 만드는 것만 큼 중요합니다. 프로젝트가 생성되면

, 당신은 파이썬 3 코드를 작성하고, 나중에

파이썬 3를 사용하는 python3 manage.py runserver를 사용하여 사이트를 실행할 수 있습니다, 당신은 가상 환경을 조사 할 수 있습니다. 파이썬 그런 다음 3

virtualenv v -p python3 

를 사용하도록 가상 환경을 만드는 경우 당신은 당신의 가상 환경에서

./manage.py runserver 

을 실행할 수 있고, 여러 파이썬 버전이있는 경우 파이썬 3

+0

OS X을 실행 중입니다. (그 것을 잊어 버렸습니다.)하지만 ps3와 함께'psycopg2'를 설치하면 트릭이 생겼습니다. 그래도 virtualenv를 사용하지 않는다면,'django-admin.py'을 실행하면 Python 3을 사용하게 될 것입니다. 또는 어떤 경우에도 중요하지 않으며 2 또는 3 중 하나를 사용할 수 있습니까? – ujvl

+0

예,'python3 manage.py runserver'를 실행하는 것으로 충분합니다. 내 대답을 업데이트했습니다. 희망적으로 더 의미가 있습니다. – Alasdair

0

를 사용합니다 설치 한 후 psycopg를 설치하는 가장 좋은 방법은 아카이브를

http://initd.org/psycopg/download/

다음 실행에 의해 설치 setup.py 설치

python3.4이

sudo는 python3.4를 구축있는 setup.py (내 경우에는, 내가 파이썬 3.4을 설치하고 싶었)

자, 입력하여 설치되었는지 확인하십시오 :

python3.4

도움말()

모듈

그것은 모듈 psycopg2 목록을 표시한다.

0

Mac에서 virtualenv를 사용하여 Python 2.7에서 Python 3을 사용하지 않고 동일한 문제가 발생했습니다. 분명히, 파이썬 3에서 pip install psycopg2을 시도하는 동안 파이썬 2.7을 사용하여 만든 설치 과정에서 생성 된 휠을 여전히 사용하고있었습니다. 그래서 나는 바퀴를 다시 만들어야했다.

sudo -H pip3 install --upgrade --force-reinstall psycopg2 
관련 문제