安装了 MySQLdb,在 virtualenv 之外工作,但里面不存在。如何解决?
Posted
技术标签:
【中文标题】安装了 MySQLdb,在 virtualenv 之外工作,但里面不存在。如何解决?【英文标题】:Have MySQLdb installed, works outside of virtualenv but inside it doesn't exist. How to resolve? 【发布时间】:2012-10-28 14:07:54 【问题描述】:我正在使用所有软件(Django、Python、virtualenv、mysqldb)的最新版本,但无法正常工作。当我从 virtualenv 外部的 python 提示符中运行“import MySQLdb”时,它可以工作,里面显示“ImportError:没有名为 MySQLdb 的模块”。
我正在尝试学习 Python 和 Linux 网络开发。我知道使用 SQLLite 是最简单的,但我想学习如何开发与我在 .NET 中可以做的相比的更大规模的应用程序。我已经阅读了 Google 上的每一篇博客文章以及 *** 上的每一篇文章,他们都建议我运行“sudo pip install mysql-python”,但它只是说“要求已经满足:mysql-python in /usr/lib/pymodules/ python2.7"
任何帮助将不胜感激!我被困在这里,不想认输,只是回到微软技术上做这件事,因为我什至无法启动和运行基本的开发环境。
【问题讨论】:
【参考方案1】:source $ENV_PATH/bin/activate
pip uninstall MySQL-python
pip install MySQL-python
这对我有用。
【讨论】:
【参考方案2】:我遇到了同样的问题,但是使用 virtualenv 中的 pip 并没有解决问题,因为我收到了这个错误
error: could not delete '/Library/Python/2.7/site-packages/_mysql.so': Permission denied
之前我通过sudo pip install mysql-python
安装了这个包
要解决此问题,请将文件 /Library/Python/2.7/site-packages/MySQL_python-1.2.5-py2.7.egg-info
和 /Library/Python/2.7/site-packages/_mysql*
复制到 ~/v/lib/python-2.7/site-packages
并将 /usr/local/mysql/lib
包含在 DYLD_LIBRARY_PATH
环境变量中。
第二步我在~/.profile
中做export DYLD_LIBRARY_PATH=/usr/local/mysql/lib
【讨论】:
在 virtualenv 中小心sudo
—— 他们似乎不太配合。【参考方案3】:
如果您使用--no-site-packages
开关(默认)创建了 virtualenv,则系统范围内安装的附加组件(例如 MySQLdb)不包含在虚拟环境包中。
您需要使用与 virtualenv 一起安装的pip
命令来安装 MySQLdb。使用bin/activate
脚本激活virtualenv,或者使用virtualenv 中的bin/pip
在本地安装MySQLdb 库。
或者,使用--system-site-package
开关创建一个包含系统站点包的新虚拟环境。
【讨论】:
另一种方法是从您的 virtualenvsite-packages
目录手动符号链接到系统范围的 _mysql.so
、_mysql_exceptions.py
和 MySQLdb
(目录)。
使用 --system-site-package 创建一个新的 virtualenv 是可行的。有没有办法修改现有的?
@dudemonkey:正如我所说,使用 virtualenv pip 将包安装在 virtualenv 中,或者使用 codeape 的建议并创建符号链接。
@MartijnPieters 从 virtualenv 内部安装时出现mysql_config not found
错误
您需要 MySQL 开发文件(头文件,mysql_config
命令)。确保你已经安装了这些。例如,在 Ubuntu 和 Debian 上,这些是 libmysqlclient-dev
软件包的一部分。以上是关于安装了 MySQLdb,在 virtualenv 之外工作,但里面不存在。如何解决?的主要内容,如果未能解决你的问题,请参考以下文章
在 Virtualenv 中 Pip 安装 MySQLdb 失败
在Windows下的virtualenv中搭建Flask+MySQLDb开发环境
virtualenv 可以找到重新定位的库(如 MySQLdb 的 mysqlclient lib)