(mypythonenv)uralbash@server:~% pip install psycopg Downloading/unpacking psycopg Downloading psycopg2-2.4.3.tar.gz (687Kb): 687Kb downloaded Running setup.py egg_info for package psycopg Error: You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application. Complete output from command python setup.py egg_info: running egg_info creating pip-egg-info/psycopg2.egg-info writing pip-egg-info/psycopg2.egg-info/PKG-INFO writing top-level names to pip-egg-info/psycopg2.egg-info/top_level.txt writing dependency_links to pip-egg-info/psycopg2.egg-info/dependency_links.txt writing manifest file 'pip-egg-info/psycopg2.egg-info/SOURCES.txt' warning: manifest_maker: standard file '-c' not found Error: You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application. ---------------------------------------- Command python setup.py egg_info failed with error code 1 Storing complete log in /home/uralbash/.pip/pip.log
Это возникает из-за утилиты pg_config которая требуется для установки psycopg. В случае если у Вас Postgres 8.4 нужно добавить pg_config в PATH (как то такPATH=$PATH:/usr/bin/). Путь до pg_config можно узнать
whereis pg_config pg_config: /usr/bin/pg_config
И установить пакеты
sudo apt-get install libpq-dev python-devНо если стоит 9.1 версия то может возникнуть ошибка
Reading package lists... Done Building dependency tree Reading state information... Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: libpq-dev : Depends: libpq5 (= 8.4.9-0squeeze1) but 9.1.1-1~bpo60+1 is to be installed E: Broken packagesВ этом случае устанавливаем psycopg не в окружении через
sudo pip install psycopg2Смотрим куда это встало
sudo python -c "import psycopg2;print psycopg2.__file__" /usr/lib/python2.6/dist-packages/psycopg2/__init__.pycИ копируем к себе в lib'ы в virtualenv
sudo cp -r /usr/lib/python2.6/dist-packages/psycopg2 mypythonenv/lib/python2.6/site-packages/Копипастим яйцо
sudo cp /usr/lib/python2.6/dist-packages/psycopg2-2.4.4.egg-info mypythonenv/lib/python2.6/site-packages/Еще надо будет скопировать mx
sudo cp -r /usr/lib/python2.6/dist-packages/mx mypythonenv/lib/python2.6/site-packages/Жеский дьютихак но главное что работает малой кровью.
проделал тоже самое, но при импорте библиотеки пишет bad magic number :(
ОтветитьУдалитьНе сталкивался, может попробовать удалить pyc'и в окружении так rm -rf `find . -name "*.pyc"`
УдалитьНапиши трэйс ошибки.
http://python.su/forum/topic/7734/
УдалитьВерно. pyc файлы кроссплатформенные. Но в начале каждого файла идет заголовок. В нем указывается номер версии Питона, которым этот файл был создан.
Это важно, потому что байткод изменяется от версии к версии, добавляются новые инструкции а старые начинают работать немного иначе.
Чтобы избавить себя от головной боли обратной совместимости хотя бы для pyc файлов (которые разработчики предпочитают рассматривать только как кеш, основа - исходный py код - OpenSource и все такое) считается, что pyc совместимы только в пределах главной версии - 2.4, 2.5, 2.6, 3.1 и т.д
На самом деле может быть несовместимость между альфа и бета версией (разные magic code) - но после выхода в релиз ничего не поменяется, это гарантированно.
Ура! Заработало!)
ОтветитьУдалитьСпасибо!
ОтветитьУдалитьВсе заработало без bad magic number.
Только вместо тех файлов, которые представлены ссылками, я копировал непосредственно "оригиналы", на которые эти ссылки указывают.
Это относится ко всему содержимому подкаталогов psycopg2, mx и "яйцу".
У меня "оригиналы" лежат в /usr/share/pyshared/psycopg2/; /usr/share/pyshared/mx/; и /usr/share/pyshared/psycopg2-2.4.5.egg-info соответственно.
Сказанное мною относится к (k)ubuntu 12.04.1 LTS
Как я понял, у автора Debian. Возможно, там не было никаких ссылок.
И, на мой взгляд, это не грязный хак, а достаточно правильный способ, не плодящий лишних сущностей (т.е зависимостей :) ), дополняющий работу virtualenv.