Python38 dll postgresql отсутствует

Обновлено: 21.11.2024

Прежде всего стоит разобраться, почему отсутствует файл python38.dll и почему возникают ошибки python38.dll. Пользователи часто сталкиваются с ситуациями, когда программное обеспечение не работает из-за ошибок в файлах .dll.

Что такое файл DLL и почему вы получаете ошибки DLL?

DLL (библиотеки динамической компоновки) — это общие библиотеки в Microsoft Windows, реализованные корпорацией Microsoft. Файлы DLL так же важны, как и файлы с расширением EXE, а архивы DLL просто невозможно реализовать без инструментов с расширением .exe.:

Когда появляется ошибка Python38.dll is Missing?

Если вы видите эти сообщения, у вас есть проблемы с Python38.dll:

  • "Запуск программы невозможен, так как на вашем компьютере отсутствует Python38.dll".
  • "Отсутствует Python38.dll".
  • "Python38.dll не найден".
  • "На вашем компьютере отсутствует Python38.dll. Попробуйте переустановить программу, чтобы решить эту проблему."
  • "Не удалось запустить это приложение, так как Python38.dll не найден. Переустановка приложения может решить эту проблему."

Но что мы делаем, когда возникают проблемы при запуске программы? В данном случае проблема с Python38.dll. Вот несколько способов быстро и навсегда устранить эту ошибку.

Способ 1. Загрузите Python38.dll и установите его вручную

Прежде всего вам необходимо скачать Python38.dll на ПК с нашего сайта.

  • Скопируйте файл в каталог установки программы после того места, где отсутствует файл DLL.
  • Или переместите файл DLL в каталог вашей системы (C:\Windows\System32, а для 64-разрядной версии — в C:\Windows\SysWOW64\).
  • Теперь вам нужно перезагрузить компьютер.

Если этот метод не помогает и вы видите такие сообщения, как "python38.dll отсутствует" или "python38.dll не найден", перейдите к следующему шагу.

Версии Python38.dll

Размер файла: 1,65 МБ

Версия

3.8.5150.1013

Фонд программного обеспечения Python

Размер файла: 1,79 МБ

Версия

3.8.3150.1013

Фонд программного обеспечения Python

Размер файла: 1,59 МБ

Версия

3.8.2150.1013

Фонд программного обеспечения Python

Размер файла: 1,59 МБ

Версия

3.8.150.1013

Фонд программного обеспечения Python

Размер файла: 1,59 МБ

Версия

3.8.1150.1013

Фонд программного обеспечения Python

Способ 2. Автоматическое исправление Python38.dll с помощью инструмента исправления ошибок

Как показывает практика, ошибка вызвана непреднамеренно удаленным файлом Python38.dll, что приводит к сбою приложений. Вредоносные программы и их заражение приводят к повреждению Python38.dll и остальных системных файлов.

Вы можете исправить Python38.dll автоматически с помощью инструмента исправления ошибок! Это устройство предназначено для восстановления поврежденных/удаленных файлов в папках Windows. Установите его, запустите, и программа автоматически исправит ваши проблемы с Python38.dll.

Если этот метод не помогает, перейдите к следующему шагу.

Способ 3. Установите или переустановите распространяемый пакет Microsoft Visual C++

Ошибка Python38.dll также может появляться из-за распространяемого пакета Microsoft Visual C++. Вам следует проверить наличие обновлений и переустановить программное обеспечение. Используйте поиск обновлений Windows для этого действия. Когда вы найдете распространяемый пакет Microsoft Visual C++, вы можете обновить его или удалить устаревшую версию и переустановить программу.

  • Нажмите клавишу с логотипом Windows на клавиатуре — выберите «Панель управления» — просмотрите категории — нажмите «Удалить».
  • Проверьте версию распространяемого пакета Microsoft Visual C++ — удалите старую версию.
  • Повторите удаление с остальной частью распространяемого пакета Microsoft Visual C++.
  • Распространяемый компонент Visual C++ 2015 Redistribution Update 3 можно установить с официального веб-сайта Microsoft.
  • Загрузив установочный файл, запустите его и установите на свой компьютер.
  • Перезагрузите компьютер после успешной установки.

Если этот метод не помогает, перейдите к следующему шагу.

Способ 4. Переустановите программу

Как только определенная программа начинает давать сбой из-за отсутствия файла .DLL, переустановите программу, чтобы безопасно решить проблему.

Если этот метод не помогает, перейдите к следующему шагу.

Способ 5. Сканирование системы на наличие вредоносных программ и вирусов

Проверка системных файлов (SFC) — это утилита в Windows, которая позволяет пользователям сканировать системные файлы Windows на наличие повреждений и восстанавливать их. В этом руководстве описывается, как запустить средство проверки системных файлов (SFC.exe) для сканирования системных файлов и восстановления отсутствующих или поврежденных системных файлов (включая файлы .DLL). Если файл защиты ресурсов Windows (WRP) отсутствует или поврежден, Windows может вести себя не так, как ожидалось.Например, некоторые функции Windows могут не работать или может произойти сбой Windows. Опция «sfc scannow» — это один из нескольких конкретных переключателей, доступных с командой sfc, командой командной строки, используемой для запуска средства проверки системных файлов. Чтобы запустить его, сначала откройте командную строку, введя «командная строка» в поиске, щелкните правой кнопкой мыши «Командная строка», а затем выберите «Запуск от имени администратора» в раскрывающемся меню, чтобы запустить командную строку с правами администратора. Вы должны запустить командную строку с повышенными привилегиями, чтобы иметь возможность выполнять сканирование SFC.

  • Выполните полное сканирование системы за счет антивирусной программы. Не полагайтесь только на Защитник Windows. Дополнительные антивирусные программы лучше выбирать параллельно.
  • После обнаружения угрозы необходимо переустановить программу, отображающую это уведомление. В большинстве случаев нужно переустановить программу, чтобы проблема сразу исчезла.
  • Попробуйте выполнить восстановление при запуске системы, если все вышеперечисленные действия не помогли.
  • В крайнем случае переустановите операционную систему Windows.

В окне командной строки введите "sfc /scannow" и нажмите Enter на клавиатуре, чтобы выполнить эту команду. Запустится средство проверки системных файлов, и для завершения сканирования потребуется некоторое время (около 15 минут). Дождитесь завершения процесса сканирования и перезагрузите компьютер, чтобы проверить, появляется ли по-прежнему сообщение об ошибке «Программа не может быть запущена, так как на вашем компьютере отсутствует Python38.dll».

Способ 6. Используйте очистку реестра

Registry Cleaner — мощная утилита, способная очищать ненужные файлы, исправлять проблемы с реестром, выяснять причины медленной работы ПК и устранять их. Программа идеально подходит для работы на ПК. Пользователи с правами администратора могут быстро сканировать, а затем очищать реестр пользователя.

Я получаю эту ошибку при попытке импортировать psycopg2 в Python 3.8 в Windows 10. Я уже пытался переустановить (как psycopg2, так и psycopg2-binary) и даже переустановить Postgres. Кажется, он отлично работает на Python 3.7.

Текст был успешно обновлен, но возникли следующие ошибки:

juliavdkris прокомментировал 29 октября 2019 г.

Я думаю, что на самом деле это другая проблема, это проблема с импортом библиотеки, а не с установкой.

прокомментировал heckad 2 ноября 2019 г.

Вы только что установили Postgres в свою ОС, и библиотека установилась успешно.

hoysala-abhi прокомментировал 6 ноября 2019 г.

Даже я столкнулся с той же проблемой. Вам повезло с этим?

juliavdkris прокомментировал 6 ноября 2019 г. •

Нет, похоже, это не будет исправлено, пока Appveyor не добавит поддержку Python 3.8. Мне пришлось просто вернуться к Python 3.7 на данный момент. :/

nevinhappy прокомментировал 7 ноября 2019 г.

Поэтому исправление ожидает новой версии для поддержки 3.8, а обходной путь переключается на 3.7 ?

прокомментировал dvarrazzo 7 ноября 2019 г.

К вашему сведению, если кто-то хочет исправить скрипт appveyor и установить туда Python 3.8 для сборки, будьте моим гостем.

Прокомментировал ShingenPizza 8 ноября 2019 г. •

Так что поправьте меня, если я ошибаюсь, но то, что я получил из комментариев в других тематических темах здесь, требует изменения/обновления appveyor для сборки и предоставления двоичного пакета psycopg2 для Python 3.8.

Из-за отсутствия бинарной версии пакет, кажется, собирается pip из исходников локально, и я также могу собрать его сам, загрузив вручную.
В обоих случаях он не работает при импорте (во время выполнения) в Python 3.8, хотя работает в Python 3.7.
Я полностью удовлетворяю требованиям к сборке и среде выполнения.
Та же ошибка появляется в Python 3.7, когда я удаляю папку psql bin из PATH.
Есть ли способ получить точный файл dll, который не был найден, из ImportError? может быть, это прольет свет здесь.
Должна ли проблема appveyor влиять на сборку пакета из исходников локально?

jerickso прокомментировал 9 ноября 2019 г.

Честно говоря, файл setup.py psycopg2 ОЧЕНЬ плохо справляется со сборкой из исходного кода в Windows конечного пользователя. Если кто-то заинтересован в его улучшении.

Среда Windows имеет несколько проблем при сборке из исходного кода по сравнению с LINUX/UNIX, некоторые из которых:

  • Необходимо установить правильный компилятор Visual C в зависимости от версии Python (у скольких из нас установлен Visual C++ 14?)
  • Определить расположение зависимостей сборки PostgreSQL (includes/libs)
  • Определить, нужны ли нам какие-либо зависимости OpenSSL на основе сборки PostgreSQL и где находятся эти файлы lib/include
  • При связывании с DLL-версией libpq убедитесь, что все соответствующие DLL (и правильные версии) доступны по пути

Кроме того, двоичные файлы PostgreSQL, вероятно, были созданы с использованием более новой версии компилятора Visual C, что может привести к включению нескольких библиотек LIBC в пространство процесса при импорте pscopyg2 (это не должно иметь место, но прошлый опыт вот почему мы создаем ВСЕ зависимости в Appveyor).

прокомментировал Хингстон 9 ноября 2019 г.

Appveyor добавил поддержку Python 3.8. Может ли это стать приоритетом сейчас?

BrendanMartin прокомментировал 18 ноября 2019 г.

У меня такая же проблема.

Прокомментировал HandiH 20 ноября 2019 г.

Traceback (последний последний вызов):
Файл "main.py", строка 9, в
import kepo
ImportError: Ошибка загрузки DLL при импорте kepo: Указанный модуль не может найти.

Прокомментировал HandiH 20 ноября 2019 г.

как решить эту проблему

kianooshsanatkar прокомментировал 28 ноября 2019 г.

Привет, у меня была та же проблема, и я использовал python 3.7.2, я не знаю, работает ли он на python 3.8 или нет, но я только что понизил версию psycopg2-binary до 2.7.*, и все хорошо.

raymondsryang прокомментировал 11 декабря 2019 г.

всмелов прокомментировал 27 февраля 2020 г.

Февраль 2020 г. – та же проблема

dvarrazzo прокомментировал 27 февраля 2020 г.

@vsmelov какую версию pip вы используете? Что выводит команда, возможно, с -v ?

dvarrazzo прокомментировал 28 февраля 2020 г.

Итак, Смелов Владимир @vsmelov: ваше наблюдение совершенно верно: сейчас февраль 2020 года. Вы знаете свой календарь. Теперь, в этот дождливый месяц, что заставило вас оставить пассивно-агрессивный комментарий о закрытой ошибке? Поскольку эта ошибка уже давно закрыта, а последняя версия psycopg действительно совместима с Python 3.8. Двоичные пакеты проверяются после сборки и у меня работают.

Если вы считаете, что у вас возникла проблема, сообщите подробности о том, что вы пытаетесь сделать, и о вашей среде. В противном случае вы просто тот, кто думает, что он находится в Твиттере, и хочет создать токсичную атмосферу, что является неуважительным поведением по отношению к людям, которые бесплатно предоставили вам свою работу, и которым я не сочувствую в своем проекте.

Жду вашего ответа.

прокомментировал tobiasgardner 1 марта 2020 г.

Вчера вечером я создал проект с 3.8.2 и столкнулся с этой проблемой. Ошибку можно найти ниже.
Сегодня утром я установил новый venv с 3.7.6, точно такие же настройки, кроме этого, и проблем не было.

dvarrazzo прокомментировал 1 марта 2020 г.

@tobiasgardner спасибо за отчет.

Пакеты psycopg доступны здесь, отсюда pip их достанет.

В Windows бинарный пакет и небинарный пакет одинаковы, но, пожалуйста, попробуйте описанное выше с psycopg2-binary вместо psycopg2, спасибо.

прокомментировал tobiasgardner 2 марта 2020 г. •

@dvarrazzo Хм, тут что-то странное. Теперь заметил, что когда я проверяю версию пипса из среды PyCharm (настройки), он говорит, что версия пипса 20.0.2 для Python 3.7, НО когда я запускаю список пипсов в терминале, он говорит 19.0.3. Для среды python 3.8 это то же самое. Но когда я пытаюсь обновиться из командной строки, он говорит, что у меня уже есть 20.0.2.

Оставаться в том же venv из командной строки.

Т.е. ваше предположение, что файл .whl загружается, было неверным, я получаю файлы tar.gz.

Я смог решить эту проблему самостоятельно, скопировав python36.dll в папку system32, хотя это была та же самая dll, которая лежала внутри добавленного каталога внутри переменной PATH. Было бы неплохо получить отзывы о том, как я могу сделать это с помощью переменной PATH, чтобы я мог удалить dll из каталога system32.

Но это приводит к следующей проблеме:

Я вызвал создание расширения plpython3u; просто чтобы показать, что он уже установлен.

Это файл журнала:

Даже шаги из руководства LanguagePack не работают:

дхананджайджеджур

  • Отметить как новое
  • Добавить в закладки
  • Подписаться
  • Отправить сообщение другу

Надеюсь, у вас все хорошо!

Мы работаем над проблемой, о которой вы сообщили, и скоро сообщим вам об этом.

Пожалуйста, дайте нам знать, если у вас возникнут вопросы или проблемы.

дхананджайджеджур

  • Отметить как новое
  • Добавить в закладки
  • Подписаться
  • Отправить сообщение другу

Я прошу вас выполнить следующие шаги для решения проблемы.

<р>1. Скопируйте указанный DDL из папки system32 в исходное место.

<р>2. Запустите командную строку в опции «Запуск от имени администратора».

<р>3. УСТАНОВИТЕ переменную PYTHON_HOME и PATH, как показано ниже

<р>4. Перезапустите сервер базы данных

<р>5. Создайте расширение

Надеюсь, это поможет.

  • Отметить как новое
  • Добавить в закладки
  • Подписаться
  • Отправить сообщение другу

Отлично! Спасибо за ваше подробное объяснение! Теперь он наконец работает. Я думаю, что я все испортил, потому что я не устанавливал эти переменные env через командную строку. Я использовал графический интерфейс для этого. Возможно, не для того пользователя.

  • Отметить как новое
  • Добавить в закладки
  • Подписаться
  • Отправить сообщение другу

На одной из моих машин (PG11) установка языков edb и следование совету Дхананджая (конкретные пути NB) сработали нормально.

С другой стороны, мне пришлось использовать обходчик зависимостей (подсказка найдена в stackoverflow, windows), чтобы узнать, что по какой-то причине в PG 10.7 для plpython3.dll требуется Python 3.4 вместо Python 3.7, который был установлен stack-builder (языки EDB), здесь не предлагается выбор.

Если вы изучаете вывод обходчика зависимостей, не следите за каждой отсутствующей dll. Большинство ошибок — отвлекающий маневр, просто проверьте состояние pythonxx.dll.

Если в нем есть вопросительный знак, вы не сможете продолжить без дополнительной работы.

Обновление до последней второстепенной версии — хороший вариант, особенно в моем случае с установкой 10.7 (в которой используется Python 3.4).

Версия 10.11 использует Python 3.7, который поддерживает загрузку языков EDB (в настоящее время).

А для Windows последним установщиком .msi для Python 3.4 является Python 3.4.4 (2015 г.), так что выбор был прост.

После обновления до 10.11 я мог просто следовать (с соответствующими изменениями) хорошему совету Дхананджая.

Мне не удалось установить постоянное решение 10.7 (обновлено до 10.11). То есть после каждого запуска моей машины примерная функция pymax() не работала. SELECT pymax(1,2) завершается с ошибкой с сообщением о том, что не удалось найти plpython3.dll. Перезапустите, если сервер с (средой) PYTHONHOME= решает эту проблему, но не навсегда. Установка 11.6 каждый раз работает корректно.

Я действительно пробовал все, что мог придумать, например. сделайте параметр PYTHONHOME постоянным, используйте программу запуска при загрузке службы (Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\postgresql-x64-11\ImagePath), настройте среду, как в решении (PATH и т. д.).

Я отказался от этого, может быть, у кого-то есть предложение?

Я буду стараться изо всех сил с plpgsql, но стабильный python сделал бы жизнь (намного) проще для меня, по крайней мере.

Рахул

  • Отметить как новое
  • Добавить в закладки
  • Подписаться
  • Отправить сообщение другу

Спасибо, что поделились своим опытом зависимости от Python для версий PG10.7 и 11.

Не могли бы вы поделиться ходом зависимостей и ошибками.

  • Отметить как новое
  • Добавить в закладки
  • Подписаться
  • Отправить сообщение другу
@Rahul написал:

Привет, janhec!

Спасибо, что поделились своим опытом зависимости от Python для версий PG10.7 и 11.

Не могли бы вы возможность поделиться ходом зависимостей и ошибками.

Введите возвращаемый файл depend.exe

Наберитесь терпения, это может занять время, когда трудно найти зависимости…

Игнорировать красный текст. Большинство из них связано с тем, что depency walker был сделан очень давно.
При желании проверьте в гугле информацию о depency walker и API. Он покажет несколько типов ответов, которые следует игнорировать.

Сверните дерево в первом узле ниже PLPYTHON3.DLL, продолжайте, пока не найдете PYTYHONxx.DLL, здесь PYTHON37.DLL.

Если PYTHONxx.DLL имеет (желтый или красный) вопросительный знак, это означает, что он не может быть правильно расположен.

Здесь все выглядит нормально. Это потому, что я уже решил проблему.

Что может пойти не так? Возможно, у вас нет файла depend.exe, так как он не является частью стандартных окон.

Или его может не быть на вашем пути.
Он является частью Visual Studio, инструментов поддержки, Platform SDK и т. д., и его можно бесплатно загрузить.

  • Отметить как новое
  • Добавить в закладки
  • Подписаться
  • Отправить сообщение другу

Большую часть дня я потратил на то, чтобы заставить скрипты Python работать. Я пытаюсь убедить своего босса использовать PostgreSQL из-за его функциональности Python. Однако я получаю ту же проблему, что и OP. Сервер падает, когда я создаю функцию, используя язык plpython3u.

При новой установке Windows 10 я установил PostgreSQL 10.11. Я установил языковой пакет. Я скопировал pyton37.dll в папки windows/Sys32 и C:\Program Files\PostgreSQL\10\lib.

Я выполнил шаги, описанные в этом посте. Единственное, что я заметил, это то, что при запуске \ dx_ plpython3u отсутствуют 3 функции. Я могу без проблем получить доступ к python из терминала. Я проверил зависимости plpython.dll и показал python37.dll.

c:\Program Files\PostgreSQL\10\bin>установите PATH=C:\edb\languagepack\v1\Perl-5.26\bin;C:\edb\languagepack\v1\Python-3.7;C:\edb\languagepack\v1\Tcl-8.6\bin;%PATH%

c:\Program Files\PostgreSQL\10\bin>pg_ctl.exe -D ..\data restart
ожидание выключения сервера. готово
сервер остановлен
ожидание запуска сервера. 2020-01-30 23:13:48.223 PST [15296] ЖУРНАЛ: прослушивание IPv6-адреса "::", порт 5432
2020-01-30 23:13:48.252 PST [15296] ЖУРНАЛ: прослушивание IPv4 адрес «0.0.0.0», порт 5432
2020-01-30 23:13:48.275 PST [15296] ЖУРНАЛ: перенаправление вывода журнала в процесс сбора журналов
2020-01-30 23:13:48.275 PST [15296] СОВЕТ: Будущие выходные данные журнала будут отображаться в каталоге «log».
готово
сервер запущен

2020-01-30 23:13:48.312 PST [18204] ЖУРНАЛ: система базы данных была отключена 2020-01-30 23:13:25 PST
2020-01-30 23:13:48.340 PST [15296] ЖУРНАЛ: система базы данных готова принимать подключения
Неустранимая ошибка Python: initfsencoding: невозможно загрузить кодек файловой системы

Psycopg — это адаптер PostgreSQL для языка программирования Python. Это оболочка для libpq, официальной клиентской библиотеки PostgreSQL.

Быстрая установка¶

Для большинства операционных систем самым быстрым способом установки Psycopg является использование пакета wheel, доступного в PyPI:

При этом будет установлена ​​предварительно скомпилированная двоичная версия модуля, для которой не требуются предварительные условия для сборки или выполнения, описанные ниже. Обязательно используйте актуальную версию pip (вы можете обновить ее с помощью чего-то вроде pip install -U pip ).

Затем вы можете импортировать пакет psycopg2, как обычно:

psycopg против psycopg-binary¶

Пакет psycopg2-binary предназначен для начинающих, чтобы они могли начать работать с Python и PostgreSQL без необходимости выполнения требований к сборке.

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

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

Пакет psycopg2 wheel поставляется вместе с собственным бинарным файлом libssl. Это может создать конфликты с другими модулями расширения, связывающимися с libssl, например, с модулем Python ssl: в некоторых случаях при параллелизме взаимодействие между двумя библиотеками может привести к segfault. В случае сомнений рекомендуется использовать пакет, собранный из исходного кода.

Изменения в бинарных пакетах между Psycopg 2.7 и 2.8¶

В версии 2.7.x pip install psycopg2 попытался бы автоматически установить бинарный пакет Psycopg. Из-за проблем с параллельным выполнением двоичных пакетов psycopg2-binary стал отдельным пакетом, а начиная с версии 2.8 он стал единственным способом установки двоичного пакета.

Если вы используете Psycopg 2.7 и хотите отключить использование двоичных пакетов колеса, полагаясь на системные библиотеки, доступные на вашем клиенте, вы можете использовать параметр pip --no-binary, например:

которые также могут быть указаны в ваших файлах requirements.txt, например. использовать:

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

Предпосылки¶

Текущая реализация psycopg2 поддерживает:

  • Версии Python с 3.6 по 3.10.
  • Версии сервера PostgreSQL с 7.4 по 14
  • Клиентская библиотека PostgreSQL версии 9.1

Предварительные требования¶

Предварительные требования к сборке должны быть выполнены для установки Psycopg из исходного кода, из исходного дистрибутива, GitHub или из PyPI.

Psycopg — это C-оболочка для клиентской библиотеки libpq PostgreSQL. Для установки из исходников вам потребуется:

Файлы заголовков Python. Обычно они устанавливаются в пакете, таком как python-dev или python3-dev. Такое сообщение, как ошибка: Python.h: нет такого файла или каталога, указывает на отсутствие заголовков Python.

Файлы заголовков libpq. Обычно они устанавливаются в пакете, таком как libpq-dev. Если вы получаете ошибку: libpq-fe.h: Нет такого файла или каталога, значит, вы их упустили.

Программа pg_config: обычно она устанавливается пакетом libpq-dev, но иногда находится не в каталоге PATH. Наличие его в PATH значительно упрощает установку, поэтому попробуйте запустить pg_config --version : если он возвращает ошибку или неожиданный номер версии, найдите каталог, содержащий pg_config, поставляемый с правильной версией libpq (обычно /usr/lib/postgresql/ XY/bin/ ) и добавьте его в PATH :

Вам нужен pg_config только для компиляции psycopg2 , а не для его обычного использования.

Когда все готово, остается только запустить стандарт:

или из каталога, содержащего исходный код:

Требования к среде выполнения¶

Если вы не скомпилируете psycopg2 как статическую библиотеку или не установите его из автономного пакета wheel, во время выполнения ему потребуется библиотека libpq (обычно распространяется в виде файла libpq.so или libpq.dll). psycopg2 полагается на хост-ОС для поиска библиотеки, если библиотека установлена ​​в стандартном месте, обычно проблем не возникает; если библиотека находится в нестандартном расположении, вам придется сообщить Psycopg, как ее найти, что зависит от ОС (например, установка подходящего LD_LIBRARY_PATH в Linux).

Файлы заголовков libpq, используемые для компиляции psycopg2, должны соответствовать версии библиотеки, связанной во время выполнения. Если вы получаете ошибки об отсутствии или несоответствии библиотек при импорте psycopg2, проверьте (например, с помощью ldd), связан ли модуль psycopg2/_psycopg.so с правильным libpq.so .

С какой бы версией libpq psycopg2 ни был скомпилирован, можно будет подключаться к серверам PostgreSQL любой поддерживаемой версии: просто установите самую последнюю версию libpq или самую практичную, не пытаясь сопоставить ее с версией сервера PostgreSQL. вам нужно будет подключиться.

Нестандартные сборки¶

Если у вас менее стандартные требования, например:

  • создание отладочной сборки
  • используя pg_config не в PATH,

затем взгляните на файл setup.cfg.

Некоторые параметры, доступные в setup.cfg, также доступны в качестве аргументов командной строки подкоманды build_ext. Например, вы можете указать альтернативное местоположение pg_config, используя:

Используйте python setup.py build_ext --help, чтобы получить список поддерживаемых параметров.

Создание отладочной сборки¶

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

    и распакуйте исходный пакет Psycopg (пакет .tar.gz).
  • Отредактируйте файл setup.cfg, добавив флаг PSYCOPG_DEBUG в параметр определения. пакет.
  • Установите переменную среды PSYCOPG_DEBUG:
  • Запустите свою программу (убедившись, что импортированный пакет psycopg2 является именно тем, который вы только что скомпилировали, а не, например, системным): вы получите обильный поток информации, напечатанный в stderr.

Нестандартная реализация Python¶

Пакет psycopg2 — это текущая зрелая реализация адаптера: это расширение C, поэтому оно совместимо только с CPython. Если вы хотите использовать Psycopg в другой реализации Python (PyPy, Jython, IronPython), есть несколько альтернатив:

  • перенос на Ctypes, но он еще не настолько проработан, как реализация C, и еще не настолько полнофункционален;
  • порт CFFI, который в настоящее время чаще используется и считается более эффективным для PyPy, но будьте осторожны с номерами его версий, поскольку они не соответствуют официальным номерам psycopg2, и некоторые функции могут отличаться.

Запуск набора тестов¶

После установки psycopg2 вы можете запустить набор тестов, чтобы убедиться, что он работает правильно. Из исходного каталога вы можете запустить:

Тесты выполняются для базы данных psycopg2_test на сокете UNIX и стандартном порту. Вы можете настроить другую базу данных для запуска теста, установив переменные среды:

Читайте также: