将 MySQLdb 安装到 virtualenv 后无法导入
Posted
技术标签:
【中文标题】将 MySQLdb 安装到 virtualenv 后无法导入【英文标题】:can not import MySQLdb after I installed it in a virtualenv 【发布时间】:2015-12-13 22:18:09 【问题描述】:系统:ubuntu14.04,mysql:5.5,python:2.7.4
我已经使用这个命令在 virtualenv 之外安装了 mysql-connector-python:
pip install mysql-connector-python --allow-external mysql-connector-python
我可以在 virtualenv 之外正确使用 mysql-connector:
think@think-Inspiron-N4050:~$ python
Python 2.7.6 (default, Jun 22 2015, 18:00:18)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import mysql.connector
>>>
>>>
然后我激活了一个 virtualenv 并安装了 mysql-connector。我用的是这个方法(我从官网下载了这个安装包):
think@think-Inspiron-N4050:~/myzone/MindFly$ source venv/bin/activate
(venv)think@think-Inspiron-N4050:~/myzone/MindFly$ cd ~/download/
(venv)think@think-Inspiron-N4050:~/download$ dpkg -i mysql-connector-python_2.0.4-1ubuntu14.04_all.deb
正确安装后无法导入:
(venv)think@think-Inspiron-N4050:~/download$ python
Python 2.7.6 (default, Jun 22 2015, 18:00:18)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import mysql.connector
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named mysql.connector
我不知道为什么,然后我不得不在 virtualenv 中安装 MySQLdb:
(venv)think@think-Inspiron-N4050:~/myzone/MindFly$ sudo apt-get install python-mysqldb
完成后我也无法导入
(venv)think@think-Inspiron-N4050:~/myzone/MindFly$ python
Python 2.7.6 (default, Jun 22 2015, 18:00:18)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named MySQLdb
然后我安装了 MySQL-python 和 libmysqlclient-dev,还是不行。
然后我查看了 venv/lib/python2.7/site-packages:
(venv)think@think-Inspiron-N4050:~/myzone/MindFly/venv/lib/python2.7/site-packages$ ls
easy_install.py pip-7.1.2.dist-info wheel
easy_install.pyc pkg_resources wheel-0.24.0.dist-info
_markerlib setuptools
pip setuptools-18.2.dist-info
没有mysql-connector或mysqldb,当我尝试重新安装mysqlconnector时,我在/usr/lib/python2.7/dist-packages中找到了mysqlconnector,
(venv)think@think-Inspiron-N4050:~/myzone/MindFly$ sudo pip install mysql-connector-python --allow-external mysql-connector-python
[sudo] password for think:
Requirement already satisfied (use --upgrade to upgrade): mysql-connector-python in /usr/lib/python2.7/dist-packages
Cleaning up...
我安装了mysql-connector-python,mysqldb,mysql-python和libmysqlclient-dev之后真的不知道怎么办了。我可以在 virtualenv 之外使用它们,但我仍然无法在 virtualenv 中导入 mysql-connector 或 mysqldb。
请帮助我:如何在 virtualenv 中连接 mysql?非常感谢。 (如果表达不清楚,请告诉我,我会更新它,谢谢)
【问题讨论】:
@Youn Elan 非常感谢您 【参考方案1】:然后我激活了一个 virtualenv 并安装了 mysql-connector (...)
dpkg -i mysql-connector-python_2.0.4-1ubuntu14.04_all.deb
(...) 然后我必须在 virtualenv 中安装 MySQLdb:sudo apt-get install python-mysqldb
Err... apt-get
和 dpkg
是您的发行版的包管理器,这与 pip
和 virtualenv 无关。您的发行版的包管理器安装系统包(在您的情况下为 .deb)并在系统范围内安装它们。 virtualenv
的重点是在隔离的“虚拟”环境中安装 python 包(使用 pip
)。你想要的是:
请注意,所有这些都记录在 virtualenv
和 pip
...
【讨论】:
哦,我明白了,非常感谢。但是为什么当我使用(venv)think@think-Inspiron-N4050:~/myzone/MindFly$ sudo pip install mysql-connector-python --allow-external mysql-connector-python
时它返回Requirement already satisfied (use --upgrade to upgrade): mysql-connector-python in /usr/lib/python2.7/dist-packages
,我已经激活了virtualenv以上是关于将 MySQLdb 安装到 virtualenv 后无法导入的主要内容,如果未能解决你的问题,请参考以下文章
在 Virtualenv 中 Pip 安装 MySQLdb 失败
在Windows下的virtualenv中搭建Flask+MySQLDb开发环境
virtualenv 可以找到重新定位的库(如 MySQLdb 的 mysqlclient lib)