Próbuję zaimportować moduł MySQL z pythonem, a dokładniej Flask, chociaż pojawia się błąd. Używam środowiska wirtualnego z moją aplikacją. Tutaj jest błąd:Błąd importowania pakietu MySQL dla Pythona
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
widzę w błędzie to mówi Library not loaded: /Library/Python/2.7/site-packages/_mysql.so
. Ponieważ używam środowiska wirtualnego, którego ścieżka jest niepoprawna. Powinno to być /lib/python2.7/site-packages/_mysql.so
.
Czy można to zmienić? Dzięki.
EDIT:
znalazłem tam terminal komenda na OSX, aby zmienić lokalizację Biblioteka:
sudo install_name_tool -change libmysqlclient.18.dylib /lib/python2.7/site-packages/MySQLdb/
choć po uderzeniu wprowadzić uzyskać to:
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 nie wydaje się, że wprowadzasz polecenie źle, jaki jest problem?
Jak stworzyłeś virtualenv? Czy używa pakietów site_packages ('--system-site-packages' w nowej wersji virtualenv, włączonej domyślnie w starszej wersji), czy jest całkowicie izolowany? – yedpodtrzitko
Tak, jest całkowicie odizolowany od systemu. –
Brakuje ostatniego argumentu polecenia 'install_name_tool'. Twoje polecenie powinno brzmieć jak "install_name_tool -change old new input". –