Ошибка импорта пакета 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.