Ошибка импорта пакета MySQL для Python

Я пытаюсь импортировать модуль MySQL с Python, а точнее Flask, хотя я получаю сообщение об ошибке. Я использую виртуальную среду с моим приложением. Вот ошибка:

    Traceback (most recent call last):
  File "../myapp/application.py", line 9, in <module>
    from flask.ext.mysql import MySQL
  File "/Users/pavsidhu/Documents/Web-Development/app/env/lib/python2.7/site-packages/flask/exthook.py", line 81, in load_module
    reraise(exc_type, exc_value, tb.tb_next)
  File "/Users/pavsidhu/Documents/Web-Development/app/env/lib/python2.7/site-packages/flaskext/mysql.py", line 3, in <module>
    import MySQLdb
  File "/Users/pavsidhu/Documents/Web-Development/app/env/lib/python2.7/site-packages/MySQLdb/__init__.py", line 19, in <module>
    import _mysql
ImportError: dlopen(/Users/pavsidhu/Documents/Web-Development/app/env/lib/python2.7/site-packages/_mysql.so, 2): Library not loaded: /Library/Python/2.7/site-packages/_mysql.so
  Referenced from: /Users/pavsidhu/Documents/Web-Development/app/env/lib/python2.7/site-packages/_mysql.so
  Reason: image not found

Я вижу в ошибке это говорит Library not loaded: /Library/Python/2.7/site-packages/_mysql.so, Поскольку я использую виртуальную среду, этот путь неверен. Так должно быть /lib/python2.7/site-packages/_mysql.so,

Есть ли способ изменить это? Благодарю.

РЕДАКТИРОВАТЬ:

Я обнаружил, что в OSX была команда терминала для изменения расположения библиотеки:

 sudo install_name_tool -change libmysqlclient.18.dylib /lib/python2.7/site-packages/MySQLdb/

хотя после нажатия Enter я получаю это:

Usage: /Library/Developer/CommandLineTools/usr/bin/install_name_tool [-change old new] ... [-rpath old new] ... [-add_rpath new] ... [-delete_rpath old] ... [-id name] input

Кажется, я не ввожу команду неправильно, в чем проблема?

1 ответ

Решение

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

Я рекомендую получить Homebrew, а затем установить python и mysql для заголовков:

brew install python
brew install mysql

А потом основываю свой virtualenv на питоне из варева:

virtualenv venv --python /usr/local/bin/python

Я знаю, что это немного больше обручей, но это сделает ваш процесс разработки намного проще. Не говоря уже о brew это большая помощь разработчику самостоятельно.

Я только что проверил, сработало ли это, мне потребовалось две минуты, чтобы получить работающий MySQLdb.

Другие вопросы по тегам