安装了 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 开关创建一个包含系统站点包的新虚拟环境。

【讨论】:

另一种方法是从您的 virtualenv site-packages 目录手动符号链接到系统范围的 _mysql.so_mysql_exceptions.pyMySQLdb(目录)。 使用 --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 失败

virtualenv 环境安装MySQLdb

在Windows下的virtualenv中搭建Flask+MySQLDb开发环境

virtualenv 可以找到重新定位的库(如 MySQLdb 的 mysqlclient lib)

如何在python2.7中安装MySQLdb 在virtualenv中安装

virtualenv中解决报错:ImportError: No module named MySQLdb