我们在Windows下开发python应用时,可能需要安装各种第三方模块,但如果又不想污染公共的python环境,怎么办呢?最好是在各自的 python工程中创建一个virtualenv虚拟环境。博主最近需要在虚拟环境中安装MySQL-python模块,这个模块如果采用pip命令行的 方式安装的话,很有可能会遇到蛋疼的提示各种缺少微软某些动态链接库的问题,这个模块的安装,除了命令行方式外,另外一种方式是下载exe文件进行安装, 但在虚拟环境中又不能这样装。于是,我就想,采用exe方式安装的话,到底在python安装目录的Lib\site-packages目录下生成了哪些 文件呢?我把这些文件拷贝到虚拟环境相应目录,是否可以达到在虚拟环境安装mysql的目的呢?一试果然可以。现在把从创建virtualenv到安装 mysqldb的过程简述一下。
一、在工程目录下创建虚机环境
在windows命令行进入工程根目录,然后执行以下命令:
D:\pythonWorkspace\testENV>virtualenv venv
New python executable in venv\Scripts\python.exe
Installing setuptools, pip, wheel...done.
D:\pythonWorkspace\testENV>
这时虚拟环境就安装好了,可以看到我们的工程目录下出现了一个venv文件夹(venv就是我们的虚拟环境的名字,可以随便起)。
注意,默认情况下,虚拟环境会依赖系统环境中的site packages,就是说系统中已经安装好的第三方package也会安装在虚拟环境中,如果不想依赖这些package,那么可以加上参数 --no-site-packages建立虚拟环境:
D:\pythonWorkspace\testENV>virtualenv --no-site-packages [虚拟环境目录]
后记:虚拟环境创建后,只有开启后,才能把包安装到虚拟环境中。那么怎样启动虚拟环境呢?windows环境下,可以直接在cmd命令行运行虚拟环 境目录下的/Scripts/activate.bat程序,Linux环境下可以在虚拟环境目录下使用source命令,例如:#source ./bin/activate来进行启动。
二、在虚拟环境安装MySQL-python
虚拟环境创建后,我们把已经在公共环境使用exe安装好的mysql涉及到的四个文件复制到虚拟环境对应目录(copy到虚拟环境下的site-packages文件夹下即可):
MySQL_python-1.2.3-py2.7.egg-info
MySQLdb
_mysql.pyd
_mysql_exceptions.py
然后我们检查下有没有安装好:
import MySQLdb
发现不报错了,就代表安装好了。
MySQLdb模块的exe文件下载版本(MySQL-python-1.2.3.win-amd64-py2.7.exe):