Python 용 Postgres 설치 시도 오류 (psycopg2)


81

내 환경에 psycopg2를 설치하려고했지만 다음과 같은 오류가 발생합니다.

(venv)avlahop@apostolos-laptop:~/development/django/rhombus-dental$ sudo pip install psycopg2
Downloading/unpacking psycopg2,
Downloading psycopg2-2.5.2.tar.gz (685kB): 685kB downloaded
Running setup.py egg_info for package psycopg2

Installing collected packages: psycopg2
  Running setup.py install for psycopg2
    building 'psycopg2._psycopg' extension
    x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall Wstrict-prototypes -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.5.2 (dt dec pq3 ext)" -DPG_VERSION_HEX=0x09010D -DPSYCOPG_EXTENSIONS=1 -DPSYCOPG_NEW_BOOLEAN=1 -DHAVE_PQFREEMEM=1 -I/usr/include/python2.7 -I. -I/usr/include/postgresql -I/usr/include/postgresql/9.1/server -c psycopg/psycopgmodule.c -o build/temp.linux-x86_64-2.7/psycopg/psycopgmodule.o -Wdeclaration-after-statement
    In file included from psycopg/psycopgmodule.c:27:0:
    ./psycopg/psycopg.h:30:20: fatal error: Python.h: Δεν υπάρχει τέτοιο αρχείο ή κατάλογος
     #include <Python.h>
                    ^
    compilation terminated.
    error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
    Complete output from command /usr/bin/python -c "import setuptools;__file__='/tmp/pip_build_root/psycopg2/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-SgfQCA-record/install-record.txt --single-version-externally-managed:
running install

running build

running build_py

creating build

creating build/lib.linux-x86_64-2.7

creating build/lib.linux-x86_64-2.7/psycopg2

copying lib/pool.py -> build/lib.linux-x86_64-2.7/psycopg2

copying lib/errorcodes.py -> build/lib.linux-x86_64-2.7/psycopg2

copying lib/__init__.py -> build/lib.linux-x86_64-2.7/psycopg2

copying lib/_json.py -> build/lib.linux-x86_64-2.7/psycopg2

copying lib/_range.py -> build/lib.linux-x86_64-2.7/psycopg2

copying lib/extensions.py -> build/lib.linux-x86_64-2.7/psycopg2

copying lib/psycopg1.py -> build/lib.linux-x86_64-2.7/psycopg2

copying lib/tz.py -> build/lib.linux-x86_64-2.7/psycopg2

copying lib/extras.py -> build/lib.linux-x86_64-2.7/psycopg2

creating build/lib.linux-x86_64-2.7/psycopg2/tests

copying tests/testconfig.py -> build/lib.linux-x86_64-2.7/psycopg2/tests

copyng tests/test_bug_gc.py -> build/lib.linux-x86_64-2.7/psycopg2/tests

copying tests/test_dates.py -> build/lib.linux-x86_64-2.7/psycopg2/tests

copying tests/test_copy.py -> build/lib.linux-x86_64-2.7/psycopg2/tests

copying tests/test_cancel.py -> build/lib.linux-x86_64-2.7/psycopg2/tests

copying tests/test_bugX000.py -> build/lib.linux-x86_64-2.7/psycopg2/tests

copying tests/test_extras_dictcursor.py -> build/lib.linux-x86_64-2.7/psycopg2/tests

copying tests/test_psycopg2_dbapi20.py -> build/lib.linux-x86_64-2.7/psycopg2/tests

copying tests/test_types_basic.py -> build/lib.linux-x86_64-2.7/psycopg2/tests

copying tests/test_async.py -> build/lib.linux-x86_64-2.7/psycopg2/tests

copying tests/test_lobject.py -> build/lib.linux-x86_64-2.7/psycopg2/tests

copying tests/test_cursor.py -> build/lib.linux-x86_64-2.7/psycopg2/tests

copying tests/test_with.py -> build/lib.linux-x86_64-2.7/psycopg2/tests

copying tests/__init__.py -> build/lib.linux-x86_64-2.7/psycopg2/tests

copying tests/test_types_extras.py -> build/lib.linux-x86_64-2.7/psycopg2/tests

copying tests/testutils.py -> build/lib.linux-x86_64-2.7/psycopg2/tests

copying tests/test_notify.py -> build/lib.linux-x86_64-2.7/psycopg2/tests

copying tests/test_green.py -> build/lib.linux-x86_64-2.7/psycopg2/tests

copying tests/test_quote.py -> build/lib.linux-x86_64-2.7/psycopg2/tests

copying tests/test_connection.py -> build/lib.linux-x86_64-2.7/psycopg2/tests

copying tests/test_transaction.py -> build/lib.linux-x86_64-2.7/psycopg2/tests

copying tests/dbapi20.py -> build/lib.linux-x86_64-2.7/psycopg2/tests

copying tests/test_module.py -> build/lib.linux-x86_64-2.7/psycopg2/tests

copying tests/dbapi20_tpc.py -> build/lib.linux-x86_64-2.7/psycopg2/tests

running build_ext

building 'psycopg2._psycopg' extension

creating build/temp.linux-x86_64-2.7

creating build/temp.linux-x86_64-2.7/psycopg

x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.5.2 (dt dec pq3 ext)" -DPG_VERSION_HEX=0x09010D -DPSYCOPG_EXTENSIONS=1 -DPSYCOPG_NEW_BOOLEAN=1 -DHAVE_PQFREEMEM=1 -I/usr/include/python2.7 -I. -I/usr/include/postgresql -I/usr/include/postgresql/9.1/server -c psycopg/psycopgmodule.c -o build/temp.linux-x86_64-2.7/psycopg/psycopgmodule.o -Wdeclaration-after-statement

In file included from psycopg/psycopgmodule.c:27:0:

./psycopg/psycopg.h:30:20: fatal error: Python.h: No such file or directory
 #include <Python.h>

                ^

compilation terminated.

error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

----------------------------------------
Cleaning up...
Command /usr/bin/python -c "import setuptools;__file__='/tmp/pip_build_root/psycopg2/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-SgfQCA-record/install-record.txt --single-version-externally-managed failed with error code 1 in /tmp/pip_build_root/psycopg2
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    load_entry_point('pip==1.4.1', 'console_scripts', 'pip')()
  File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 148, in main
    return command.main(args[1:], options)
  File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 169, in main
    text = '\n'.join(complete_log)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xce in position 54: ordinal not in range(128)

또한 gunicorn을 설치하는 동안 오류가 발생합니다. 예를 여기서 따랐 지만 아무것도 따르지 않았습니다. 내 가상 환경은 --no-site-packages플래그를 사용하여 생성되었습니다 . 우분투 13.10과 그리스 환경을 사용합니다. 그게 아닐까요?


11
당신은이 있는가 python-dev패키지가 설치되어 있습니까? Debian 기반 배포 (예 : Ubuntu) 인 apt-get install python-dev경우 psycopg2설치를 시도한 다음 다시 시도 합니다. C 또는 C ++로 작성된 Python 확장을 컴파일하기 위해 필요합니다.
lanzz 2014-04-08

감사합니다 ...
Apostolos 2014

2
데비안이 아닌 배포판을 사용하는 경우 yum install python-devel. 그 차이에 대한 이유는 혼란과 혼란을 뿌리는 것 외에는 나를 피합니다.
Richard D

좋은 질문은, upvoted해야한다
티모

1
@RichardD yum과 함께 Python3 용 python-devel을 어떻게 설치합니까?
Joshua Gomez

답변:


167

python-dev패키지처럼, C ++ 또는 C로 작성된 파이썬 확장의 컴파일이 필요합니다 psycopg2. 당신이 (예를 들어 우분투) 데비안 기반 배포를 실행하는 경우, 당신은 설치 python-dev실행

sudo apt install python-dev

또는

sudo apt install python3-dev

Python 버전에 따라 다릅니다 (예 :) sudo apt install python3.8-dev.

그런 다음 평소와 같이 환경 에 설치 psycopg2를 진행 하십시오 virtualenv.


13
python 3을 사용하는 경우 작동하지 않을 수도 있고 작동하지 않을 수도 있습니다 apt-get install python3-dev. 대신 수행해야 합니다.
Paul Whalen 2014 년

17
내가해야 할 일을했을 apt-get install python3.5-dev파이썬 3.5
또는 두안에게

7
python3.7-dev🤔도 동일

2
동일 python3.8-dev !
marou

2
여기에 패턴이있을 것 같아요 ... 🧐
lanzz

38

의 경우 Ubuntu 14.04Docker 이미지 python:3.4.3-slim에서이 조합이 저에게 효과적 이었습니다.

sudo apt-get update
sudo apt-get install -y build-essential
sudo apt-get install -y python3.4-dev
sudo apt-get install -y libpq-dev

pip3 install psycopg2

참고 build-essential패키지. 제 경우에는 매우 중요했습니다.


4
필수 빌드가 나에게도 해줬습니다. Ubuntu 16.04 및 Python 2.7.12 사용
wilblack

여기도 마찬가지입니다! build-essential잃어버린 조각이었습니다.
ankush981

우분투 16.04, 파이썬 3.5, 나에게도 똑같다 – 필수 빌드가 없다.
Max Malysh

13

제 경우에는 (python 2.7 및 python 3.4가 설치된 우분투 12.04)

sudo apt-get install python3-dev 

충분하지 않았습니다. 트릭은 무엇입니까

sudo apt-get install python3.4-dev

큰! 그것도 내 문제였다.
Vitalii Ponomar

제 경우에는 apt install python3.8-dev저를 구했습니다
weaming dec

3

먼저 python-dev를 설치하십시오.

sudo apt-get install python-dev

그리고 적절하게 사용하려면 다음을 시도하십시오.

이것은 UTF-8로 설정되지 않은 터미널의 인코딩과 관련이 있습니다. 내 터미널은 다음과 같습니다.

$ echo $LANG
es_UY.UTF-8
$ python
Python 2.7.3 (default, Apr 20 2012, 22:39:59) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> s = '(\xef\xbd\xa1\xef\xbd\xa5\xcf\x89\xef\xbd\xa5\xef\xbd\xa1)\xef\xbe\x89'
>>> s1 = s.decode('utf-8')
>>> print s1
(。・ω・。)ノ
>>> 

설정을 해제하면 동일한 오류가 발생합니다.

$ unset LANG
$ python
Python 2.7.3 (default, Apr 20 2012, 22:39:59) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> s = '(\xef\xbd\xa1\xef\xbd\xa5\xcf\x89\xef\xbd\xa5\xef\xbd\xa1)\xef\xbe\x89'
>>> s1 = s.decode('utf-8')
>>> print s1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-5: ordinal not in range(128)
>>> 

1
유니 코드 오류는 단순히 시각화와 관련이 있습니다. 실제 치명적 오류는 Python.h헤더 파일 을 찾을 수 없다는 것 입니다.
lanzz 2014-04-08

1
감사합니다. 서버 dev : sudo apt-get install postgresql-server-dev-9.1 또는 postgres 9.3을 사용하는 경우 9.3도 설치해야했습니다.
radtek

3

데비안 :

sudo apt-get install gcc

왜 이것이 반대 투표입니까? 이것은 나를 위해 문제를 해결했습니다. gcc는 우분투 19에 기본적으로 사전 설치되어 있지 않습니다.
Saturnix

3

나는 모든 해결책을 시도했지만 작동합니다.

pip install psycopg2-binary

lib를 설치 한 후 import psycopg2 python 파일에서 사용할 수 있으며 추가 db 연결 구성


2

최신 Python 3.7의 경우 다음을 설치해야했습니다 python3.7-dev.

sudo apt-get install -y python3.7-dev


1

python3 venv 내의 Amazon Linux에서 다음을 수행해야했습니다.

sudo yum install python3-devel postgresql-devel
pip install psycopg2

0

sudo apt-get install -y build-essential 모든 것을 성공하지 못한 후에 이것은 내 문제를 해결하는 데 도움이되었습니다.


0

제 경우에는 python3.8을 사용하는 가상 환경에 psysopg2 버전 2.7.3.2를 설치하려고했습니다.

위의 오류가 발생했습니다.

결과적으로 python3.8에는 psycopg2 버전 2.8 이상이 필요합니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.