Компиляция mysql-python в Windows с PIP
Итак, у меня есть Python 2.7 и setuptools, установленные на моем ноутбуке Windows 7. У меня также есть Visual Studio 2008 Express и MySQL с инструментами dev.
Я пытаюсь установить mysql-python через pip, например:
pip install mysql-python
Я получаю ошибки ссылок:
Creating library build\temp.win32-2.7\Release\_mysql.lib and object build\temp.win32-2.7\Release\_mysql.exp
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_Exception
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_Exception
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_server_init
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_server_end
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_thread_safe
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ResultObject_Initialize
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ResultObject_Initialize
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ResultObject_Initialize
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ResultObject_Initialize
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ResultObject_Initialize
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ConnectionObject_Initialize
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ConnectionObject_Initialize
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ConnectionObject_Initialize
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ConnectionObject_Initialize
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ConnectionObject_close
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ConnectionObject_affected_rows
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_debug
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ConnectionObject_dump_debug_info
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ConnectionObject_autocommit
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ConnectionObject_commit
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ConnectionObject_rollback
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ConnectionObject_next_result
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ConnectionObject_set_server_option
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ConnectionObject_sqlstate
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ConnectionObject_warning_count
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_escape_string
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_escape_string
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_row_to_tuple
_mysql.obj : error LNK2019: unresolved external symbol __imp__strncpy referenced in function __mysql_row_to_dict
_mysql.obj : error LNK2019: unresolved external symbol __imp__strncat referenced in function __mysql_row_to_dict
_mysql.obj : error LNK2019: unresolved external symbol _memset referenced in function __mysql_row_to_dict_old
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql__fetch_row
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ResultObject_fetch_row
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ConnectionObject_change_user
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ConnectionObject_character_set_name
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ConnectionObject_set_character_set
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ConnectionObject_get_character_set_info
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_get_client_info
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ConnectionObject_get_host_info
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ConnectionObject_get_proto_info
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ConnectionObject_get_server_info
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ConnectionObject_info
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ConnectionObject_insert_id
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ConnectionObject_kill
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ConnectionObject_ping
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ConnectionObject_query
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ConnectionObject_select_db
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ConnectionObject_shutdown
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ConnectionObject_stat
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ConnectionObject_thread_id
_mysql.obj : error LNK2019: unresolved external symbol __imp__sprintf referenced in function __mysql_ConnectionObject_repr
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ResultObject_data_seek
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ResultObject_row_seek
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ResultObject_row_seek
_mysql.obj : error LNK2019: unresolved external symbol [email protected] referenced in function __mysql_ResultObject_dealloc
LINK : error LNK2001: unresolved external symbol [email protected]
build\lib.win32-2.7\_mysql.pyd : fatal error LNK1120: 56 unresolved externals
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 9.0\\VC\\BIN\\link.exe' failed with exit status 1120
Есть идеи, как решить эту проблему? Благодаря
Ответы
Ответ 1
У меня была такая же проблема и точные ошибки. Я не знаю, почему, но
pip install Mysql-python
дал ошибки.
Но когда я попробовал
easy_install Mysql-python
Это сработало. Я не знаю, почему, но это сработало, но хотелось бы знать, почему.
Ответ 2
Убедитесь, что оба из них - 32 бит или 64 бит, и у вас нет рассогласования между ними. Когда у меня возникла эта проблема, это было связано с тем, что я установил 64-битный Python, но имел 32-битный MySQL. Таким образом, установщик pip не смог найти соответствующие двоичные файлы для ссылки и не смог с этим сообщением. Исправление проблемы было просто вопросом установки 32-битного Python поверх, и все сработало.
Обратите внимание, что также возможно обновить MySQL до 64 бит, но установщики на данный момент для MySQL кажутся только 32-битными. Вы можете установить через .zip файл, загруженный с официального сайта MySQL, хотя в нем есть 64-битные двоичные файлы.
Чтобы узнать, что вы установили:
- Для Python просто зайдите в командную строку и введите
python
. Он должен показать вам, какая версия и если она была 32-битной или 64-разрядной,
Python 2.7.10 (по умолчанию, 23 мая 2015, 09:40:32) [MSC v.1500 32 бит (Intel)] на win32
- Для MySQL самым простым способом, вероятно, будет то, в какую папку он установлен. Если он устанавливается на
Program Files/
, тогда он равен 64 бит, но если он устанавливается на Program Files (x86)/
, он будет 32-битным
Ответ 3
Похоже, что ваша установка не обнаруживает клиентскую библиотеку mysql.
Найдите и скопируйте mysqlcppconn.dll из вашей установки mysql в папку, которую читает сборка script, например, в папке Windows. Для получения дополнительной информации ознакомьтесь с этой ссылкой https://dev.mysql.com/doc/connector-cpp/en/connector-cpp-apps-windows-visual-studio.html#connector-cpp-application-build-dynamic
Ответ 4
Я попробовал это, и это сработало для меня на 64-разрядной установке Win7 для anaconda.
введите это в свою командную строку:
pip install mysql-python
Моя установка работает, потому что я использую Studio 2010.