理解Python的虚拟环境

8 投票
2 回答
5920 浏览
提问于 2025-04-17 14:34

我最近在了解虚拟环境,发现它是个非常有用的工具,但我开始怀疑自己之前设置的整个Python环境是否正确。目前,我安装的所有模块和包都在这个目录下:

/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

但是虚拟环境的文档似乎在说,像这样的全局安装是不好的。如果真是这样,那我现在的模块该怎么办,以后又该怎么安装模块呢?比如,我最近在我的用户目录里用这个命令安装了flask:

pip install flask

现在它在site-packages里。我是不是应该做点不同的事情?我对文档有点困惑,它似乎建议我需要进入一个项目目录,设置一个虚拟环境,然后用虚拟环境安装我需要的所有模块。这真的是这样吗?有没有什么办法可以让事情变得简单一些?感觉每个项目目录都要安装几十个包,实在有点多。

或者说,我只需要为那些使用比我系统目录里安装的模块旧版本的项目创建虚拟环境?如果真是这样,那虚拟环境的理念又为什么要反对所有的系统安装呢?

2 个回答

0

在你把任何东西投入生产之前,使用虚拟环境的好处其实不大。你只需要多一步去激活这个虚拟环境,而且你还得在每个虚拟环境里安装你常用的环境……这其实也没花多少额外的力气……

但是,一旦你把东西投入生产后,当出现问题的时候,使用虚拟环境可能会带来很大的好处哦 :-)

14

如果你已经像这样安装了virtualenv:

pip install virtualenv

接下来,你需要设置一个特定的虚拟环境文件夹:

virtualenv [your project folder name]

这样会创建一个项目文件夹,并且里面会有一些重要的子文件夹。

在安装任何新东西之前,你需要先激活你的虚拟环境,只有在激活后新安装的模块才能使用。在你的项目文件夹中输入:

source bin/activate

你会在每个终端行看到你的虚拟环境名称在括号里。这表示你已经激活了虚拟环境。现在可以用pip或easy_install来安装东西了。

pip install flask

virtualenv的作用就是把你的路径设置为在[venv文件夹]/bin中查找可执行文件,而不是在/usr/local/bin或其他地方。所以你可以直接把文件复制到你的虚拟环境的bin文件夹里。(比如MongoDB的文件通常是压缩包,你可以直接把它解压到你的venv的bin文件夹里,这样在激活后就能使用那个特定版本的MongoDB了。)你可以自己试试,从你的虚拟环境和默认环境运行这个命令,看看有什么不同。

echo $PATH && echo $PYTHONPATH

要退出你的虚拟环境:

deactivate

输入这个命令就能回到默认环境。

如果你还没看过这个,里面有很多不错的资源。

https://python-guide.readthedocs.org/en/latest/dev/virtualenvs/

撰写回答