2015-07-23 2 views
7

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

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.

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

EDIT:

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

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

хотя после удара ввести я получаю это:

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

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

+1

как вы создали виртуальный? Использует ли он систему site_packages ('--system-site-packages' в новой версии virtualenv, включенную по умолчанию в старой версии), или она полностью изолирована? – yedpodtrzitko

+0

Да, он полностью изолирован от системы. –

+0

Отсутствует последний аргумент команды 'install_name_tool'. Ваша команда должна выглядеть так: 'install_name_tool -change старый новый вход'. –

ответ

2

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

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

brew install python 
brew install mysql 

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

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

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

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

+0

Работал фантастически и исправил проблему без каких-либо проблем, отличный ответ. –

Смежные вопросы