2017-05-29 45 views
5

Mam problem z przetworzenia na pip install mysqlclient dla Python3 na Mac OS Sierra.Instalacja mysqlclient dla MariaDB na Mac OS dla python3

running build_ext 
building '_mysql' extension 
creating build/temp.macosx-10.12-x86_64-3.6 
clang -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/usr/local/Cellar/openssl/1.0.2k/include -Dversion_info=(1,3,10,'final',0) -D__version__=1.3.10 -I/usr/local/Cellar/mariadb/10.2.6/include/mysql -I/usr/local/Cellar/mariadb/10.2.6/include/mysql/.. -I/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/include/python3.6m -c _mysql.c -o build/temp.macosx-10.12-x86_64-3.6/_mysql.o 
_mysql.c:1911:42: error: no member named 'reconnect' in 'struct st_mysql' 
     if (reconnect != -1) self->connection.reconnect = reconnect; 
           ~~~~~~~~~~~~~~~~^
1 error generated. 
error: command 'clang' failed with exit status 1 

Zainstalowałem MariaDB i xcode-select --install, a także przetworzone.

Odpowiedz

15

Problemem jest tu od mariadb10.2.x z mariadb10.1.23 nie mam problemu, aby zainstalować mysqlclient.

Więc z mariadb10.2.x my musi zainstalować mariadb-connector-c:

brew unlink mariadb 

brew install mariadb-connector-c 
ln -s /usr/local/opt/mariadb-connector-c/bin/mariadb_config /usr/local/bin/mysql_config 

pip install mysqlclient 

rm /usr/local/bin/mysql_config 
brew unlink mariadb-connector-c 
brew link mariadb 

UPDATE: błąd jest ustalona w mysqlclient (zob https://github.com/PyMySQL/mysqlclient-python/pull/177), ale jeszcze nie wydany

+0

Lepiej być intressting wiedzieć dlaczego i co one usunięte z MariaDB 10.2.x –

+0

Myślę, że jest powiązany z tą linią dziennika zmian: Stara biblioteka klientów GPL zniknęła; teraz MariaDB Server jest dostarczany z biblioteką klienta LGPL Connector/C (MDEV-9055) – notFloran

+0

Sam problem polega na tym, że aplikacje (takie jak Python) nie powinny dotykać wewnętrznych struktur MYSQL lub MYSQL_STMT, szczególnie jeśli są dostępne funkcje API. MySQL dodany w 2004 roku MYSQL_OPT_RECONNECT opcji, aby zmienić zachowanie łączenie się przez mysql_options() nazwać - więc może teraz nadszedł czas, aby to naprawić. –

3

ROZWIĄZANIA:

pip uninstall mysqlclient 
pip install -U git+git://github.com/PyMySQL/mysqlclient-python