Измените, где pyodb c ожидает, что libodb c .2.dylib будет жить (изменение расположения файлов odb c по умолчанию) - PullRequest
1 голос
/ 14 января 2020

При импорте pyodb c

❯ python
>>> import pyodbc
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: dlopen(/Users/pcosta/Documents/test/myenv/lib/python3.7/site-packages/pyodbc.cpython-37m-darwin.so, 2): Library not loaded: /usr/local/opt/unixodbc/lib/libodbc.2.dylib
  Referenced from: /Users/pcosta/Documents/test/myenv/lib/python3.7/site-packages/pyodbc.cpython-37m-darwin.so
  Reason: image not found

Я знаю, почему это происходит, поскольку у меня нет libodbc.2.dylib в ожидаемом месте. Причина в том, что у меня нет разрешения на запись в /usr/local/, поэтому я установил Homebrew в ~/.brew. Это в основном работает нормально. Я даже могу заставить работать и tsql, и isql, как и ожидалось, выполнив следующие шаги: https://github.com/mkleehammer/pyodbc/wiki/Connecting-to-SQL-Server-from-Mac-OSX.

Так что у меня есть libodbc.2.dylib, это просто что он находится в /Users/pcosta/.brew/lib, а не /usr/local/opt/unixodbc/lib.

Основные вопросы: могу ли я заставить pyodb c искать libodbc.2.dylib (и другие связанные файлы) в другом каталоге?

У меня есть все необходимые файлы и я их правильно настроил, мне просто нужно как-то переписать pyodb c.

Спасибо!

1 Ответ

1 голос
/ 16 января 2020

Отчасти благодаря указаниям этой проблемы GitHub Мне удалось найти какое-то решение.

Предполагая, что у вас есть brew install unixodbc:

  1. Добавить следующие пути (до .zshrc, .bashrc или .bash_profile):
export LDFLAGS="-L/Users/pcosta/homebrew/opt/unixodbc/lib $LDFLAGS"
export CPPFLAGS="-I/Users/pcosta/homebrew/opt/unixodbc/include $CPPFLAGS"
export PKG_CONFIG_PATH="/Users/pcosta/homebrew/opt/unixodbc/lib/pkgconfig $PKG_CONFIG_PATH"
Запустите pip install --no-binary pyodbc pyodbc, чтобы обойти двоичный файл и создать себя
...