导入Python的MySQL包时出错

导入Python的MySQL包时出错,python,macos,virtualenv,importerror,install-name-tool,Python,Macos,Virtualenv,Importerror,Install Name Tool,我正在尝试使用python导入MySQL模块,更具体地说是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-Developm

我正在尝试使用python导入MySQL模块,更具体地说是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
虽然在按下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

我似乎没有输入错误的命令,问题出在哪里?

通常,尽量避免像瘟疫一样安装系统python。是的,甚至把你的虚拟世界建立在它的基础上。这往往会产生难以理解的问题

我建议获取并安装python和mysql作为标题:

brew install python
brew install mysql
然后将您的virtualenv基于brew的python:

virtualenv venv --python /usr/local/bin/python
我知道,这有点困难,但它会让你的开发过程变得更容易。更不用说
brew
本身对开发者来说是一个很大的帮助


我只是检查了一下它是否有效,我花了两分钟才得到一个有效的MySQLdb。

你是如何创建virtualenv的?它是使用系统的站点软件包(在新的virtualenv版本中是系统站点软件包,在旧版本中默认启用),还是完全隔离?是的,它与系统完全隔离。您缺少
安装名称工具
命令的最后一个参数。您的命令应该是这样的,
install\u name\u tool-change old-new input
。那么我该如何更改
\u mysql.So
?参考?尝试将LD_LIBRARY_路径设置为包含/lib/python2.7/site packages/。这是一种临时的、特定于环境的方法,可以实现install_name_tool的永久效果。在bash中:
export-LD\u-LIBRARY\u-PATH=/lib/python2.7/site-packages/:${LD\u-LIBRARY\u-PATH}
工作非常出色,解决了这个问题,没有任何问题,回答得很好。
virtualenv venv --python /usr/local/bin/python