Установка freetds для виртуальной среды Python

Я настроил базовую виртуальную среду Python3 и мне нужен доступ к серверу SQL, однако я не могу понять, как заставить модуль pymssql найти установку freetds в виртуальной среде. Моя структура каталога:

VirtualEnv/
    --------.git/
    --------(git files)
    --------bin/
              -------activate
              -------easy_install
              -------pip
              -------python3
              -------(more bin stuff)
    --------include/
    --------lib/--> python3.5 --> site_packages --> (modules & sources)
    --------project_dir/--> (project sources)

Где разместить модуль freetds и указать на него pymssql?


person Bryan Wheeler    schedule 17.03.2016    source источник
comment
Бинарный файл FreeTDS .so находится на системном уровне, за пределами вашего virtualenv. Какой дистрибутив вы используете? Вам нужно будет установить некоторые предварительные условия. Убунту? ЦенОС?   -  person FlipperPA    schedule 18.03.2016
comment
Я работаю на MAC, поэтому я предполагаю, что это BSD. Виртуальная среда — это дистрибутив, поставляемый вместе с Python3. Есть ли способ установить пакеты freetds в этой виртуальной среде?   -  person Bryan Wheeler    schedule 18.03.2016


Ответы (1)


Если вы пытаетесь запустить его локально на своем Mac, лучше всего установить FreeTDS через homebrew. Он будет установлен на системном уровне, после чего либо pyodbc, либо pymssql смогут использовать FreeTDS для связи с SQL Server.

Сначала установите доморощенный:

http://brew.sh/

Затем установите FreeTDS:

brew install freetds

Затем проверьте подключение к серверу через FreeTDS:

tsql -H <yourdbhost> -p <yourdbport> -U <yourusername> -P <yourpassword>

Оттуда возьмите те же учетные данные и подключитесь к pymssql в Python. Удачи!

person FlipperPA    schedule 26.03.2016
comment
Проблема возникает из-за того, что я запускаю python3 в virtualenv, но мой freetds находится на системном уровне. Кажется, мне нужно, чтобы virtualenv либо смотрел за пределы себя, чтобы найти файлы freetds, либо мне нужно установить freetds и любые зависимости от virtualenv, последнее, что я считаю лучшим способом. - person Bryan Wheeler; 27.03.2016
comment
Virtualenv должен влиять только на Python и его пакеты, а не на системный уровень. Чтобы убедиться в этом, попробуйте запустить tsql -C и which tsql без virtualenv, а затем с активированным. - person FlipperPA; 27.03.2016