Почему я не могу установить psycopg2?(Python 2.6.4, PostgreSQL 8.4, OS X 10.6.3) - PullRequest
3 голосов
/ 12 июня 2010

ОРИГИНАЛЬНОЕ СООБЩЕНИЕ (сейчас устарело):

После запуска python setup.py install я получаю следующее:

Warning: Unable to find 'pg_config' filebuilding 'psycopg2._psycopg' extension
gcc-4.0 -arch ppc -arch i386 -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -O3 -   DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.2.1 (dt dec ext pq3)" -DPSYCOPG_EXTENSIONS=1 -DPSYCOPG_NEW_BOOLEAN=1 -DHAVE_PQFREEMEM=1 -DHAVE_PQPROTOCOL3=1 -I/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -I. -c psycopg/psycopgmodule.c -o build/temp.macosx-10.3-fat-2.6/psycopg/psycopgmodule.o
unable to execute gcc-4.0: No such file or directory
error: command 'gcc-4.0' failed with exit status 1

Там, наверное, есть что-то кричащее, очевидное для любого, кто первым знает о бэк-энде веб-программировании, но, к сожалению, для меня все это чепуха. Документация psycopg2 не помогла.


ОБНОВЛЕНИЕ в начале 12 июня : после обновления всего моего программного обеспечения сообщение об ошибке изменилось.

Теперь, когда я запускаю "python setup.py install", я получаю следующее:

Warning: Unable to find 'pg_config' filebuilding 'psycopg2._psycopg' extension
gcc-4.0 -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -O3 -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.2.1 (dt dec ext pq3)" -DPSYCOPG_EXTENSIONS=1 -DPSYCOPG_NEW_BOOLEAN=1 -DHAVE_PQFREEMEM=1 -DHAVE_PQPROTOCOL3=1 -I/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -I. -c psycopg/psycopgmodule.c -o build/temp.macosx-10.3-fat-2.6/psycopg/psycopgmodule.o

сопровождается очень длинным списком других сообщений об ошибках.

Может быть или не иметь значения, что когда я помещаю «gcc-4.0» в Терминал, он возвращается с:

i686-apple-darwin10-gcc-4.0.1: no input files

ОБНОВЛЕНИЕ 12:41 по Гринвичу 12 июня: Я думал, что установка macports сработала, но при попытке запустить сайт она закончилась следующей ошибкой:

raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: No module named psycopg2

Так что, я думаю, это означает, что psycopg2 не был установлен должным образом. Так что я вернулся на круги своя.

Ответы [ 5 ]

8 голосов
/ 12 июня 2010

( См. Правки ниже для вашего обновленного вопроса )

У вас нет исполняемого файла компилятора "gcc4.0" на вашей машине, или нужной версии, или установленного в месте, которое Python не может найти / использовать. Инструменты XCode / Developer (которые включают GCC ) должны быть на ваших исходных установочных DVD-дисках OSX.

Поскольку вы достаточно скромны, чтобы называть себя новичком, вот вам самородок мудрости ... Устранение этой ошибки действительно не имеет ничего общего с серверной веб-разработкой, поскольку это ваша локальная среда разработки (ваша машина и все остальное). программное обеспечение, как оно настроено и установлено), что является проблемой. Лучший совет, который я могу дать для расшифровки gobbledegook, - начать поиск по ключевым словам Googling для вещей, о которых вы никогда не слышали. Если бы я был на вашем месте, это сообщение об ошибке кричало бы мне: «пойди, узнай, что за чертовщина gcc4.0. Затем, когда я узнаю, что это такое и для чего оно нужно, и зачем оно нужно python, я выясню, почему Python не может найти его на моем компьютере, а потом я что-то с этим делаю ". Удовлетворение от решения подобных проблем не для всех, однако, это точно.

Ответ на все эти вопросы таков: psycopg2 - это расширение на python, написанное на языке Си. Множество расширений для python написаны на C, а не на python, поскольку C гораздо более оптимизирован, чем когда-либо был бы python. Вот, собственно, и написан сам интерпретатор Python. Код языка C должен быть скомпилирован , прежде чем его можно будет использовать (в отличие от кода Python, который интерпретируется ), и в этом случае вам нужен компилятор gcc4.0. Теперь, возможно, если бы вы использовали Windows или Linux, скомпилированная версия psycopg2, возможно, уже была доступна, и вам не нужно было бы устанавливать GCC, так как вам не пришлось бы компилировать его, чтобы использовать его (он будет скомпилирован уже для вы). Но, похоже, вам придется скомпилировать его самостоятельно в OS X, и для этого вам нужно, чтобы программа «gcc4.0» была доступна в системном PATH, чтобы можно было найти сценарий установки, который вы пытаетесь запустить и использовать это. На OS X вы можете получить его с ваших оригинальных установочных DVD-дисков, которые поставляются с вашим компьютером. Вставьте их в дисковод и найдите программу установки Developer Tools. После того, как вы это установили, вы сможете проверить, установлен ли компилятор GCC 4.0, попытавшись запустить команду "gcc4.0" в любом окне консоли и посмотреть, установлен ли он и находится ли он на вашем пути.

Редактировать для вашего обновления

Похоже, у вас теперь хорошая установка компилятора GCC 4.0! Хорошая работа. Когда вы видите это:

>gcc4.0
i686-apple-darwin10-gcc-4.0.1: no input files

Эти выходные данные компилятора сообщают вам его точную версию, а затем сообщают, что вы не указали его параметров, поэтому он ничего не сделает для вас. Это нормально, так как ваш скрипт установки psycopg2 будет вызывать его, а не вы напрямую.

Далее, похоже, что psycopg2 ожидает, что у вас также должны быть установлены библиотеки разработки сервера PostgreSQL. Поскольку я вижу, что вы сейчас используете MacPorts, вы сможете легко установить эти библиотеки с помощью этой команды:

sudo port install postgresql-server-devel

Это должно дать вам ваш пропавший pg_config исполняемый файл, который ищет программа установки.

Держите нас в курсе ваших успехов!

4 голосов
/ 06 июля 2010

Если вы установили postgres из Enterprise DB, вы, вероятно, просто захотите

export PATH=$PATH:/Library/PostgreSQL/8.4/bin

или аналогичный - в зависимости от версии.

Если он жалуется на

cc1: error: unrecognized command line option "-Wno-long-double"

тогда вам не понравится ваш новый gcc - вы можете переписать ваш gcc, чтобы заставить его использовать gcc4.0, выполнив:

alias gcc=/usr/bin/gcc-4.0

и затем снова запустите ваш easy_install.

3 голосов
/ 12 июня 2010

Я думаю, ты делаешь это сложнее, чем должно быть. Вместо того, чтобы напрямую запускать setup.py, я предлагаю MacPorts сделать это за вас:

sudo port install py26-psycopg2

2 голосов
/ 01 октября 2011
  1. Установить PostgreSQL для Mac - http://www.postgresql.org/download/macosx

  2. установить путь к новому местоположению PostgreSQL для установки psycopg2:

PATH=$PATH:/Library/PostgreSQL/9.0/bin/ sudo easy_install psycopg2
2 голосов
/ 09 февраля 2011

Я уверен, что нам всем не хотелось бы упускать из виду «кричащее очевидное», поэтому, возможно, стоит проверить это перед тем, как приступить к установке нового компилятора. В этом случае может случиться так, что PostgreSQL не установлен на Mac этого человека. Следовательно, psycopg2 не может найти программу 'pg_config', которая поставляется с более новыми версиями этой базы данных, в результате чего выдается предупреждающее сообщение "Невозможно найти 'pg_config'".

Итак, прежде чем возиться с новым компилятором или любой другой частью цепочки инструментов разработчика, сначала проверьте и посмотрите, установлен ли у вас PostgreSQL. Если вы все же найдете программу pg_config и укажите этот путь в файле setup.cfg в дистрибутиве psycopg. Затем запустите 'python setup.py install' и посмотрите, получаете ли вы те же сообщения об ошибках. Надеюсь, он просто начинает «компилироваться»; но если этого не произойдет, вы окажетесь оправданными в выполнении более сложных процедур, описанных выше.

...