使用virtualenv配置Python虚拟环境

本文主要介绍使用virtualenv工具配置Python的虚拟环境和一些其他相关技巧,仅作整理,着实是因为网络上类似文多过于混乱。

同名本地模块与全局模块切换

在介绍虚拟环境之前,先介绍另一个小技巧作为开胃菜:如何在本地模块和同名的全局模块之间切换。我工作过程中曾经遇到过的问题。首先我们需要了解Python对模块位置的搜索顺序:

  1. 当前目录。
  2. 搜索环境变量PYTHONPATH下的每一个目录。
  3. Python的安装目录,即我们通常通过pip安装的模块。

然后将模块搜索路径存储在system中的sys.path变量中。

由上我们可以总结出调用本地模块的两种办法:

  • 第一种将本地模块的路径添加到环境变量中,具体方法不再赘述。
  • 第二种办法则是直接修改sys.path变量。实例代码如下:
    import sys
    # 必须insert到开始位置,不可append
    sys.path.insert(0, "d:/code_python/mylib")
    

virtualenv的安装和使用

Python中管理虚拟环境的工具有很多,比如内置的venv,新颖的pipenv等,你甚至可以尝试Anaconda,这里只介绍传统使用较多的virtualenv。它可以创建独立的Python解释器虚拟环境,你可以在里面单独部署第三方依赖包,每个虚拟环境和安装的Python环境是独立而且相互隔离的。以下从安装->部署->激活->关闭整理流程做一个介绍。

安装

虚拟环境的功能未集成在pip中,需要另外安装virtualenv工具,命令如下:

PS C:\Users\xzhang> pip install virtualenv
PS C:\Users\xzhang> virtualenv --version
virtualenv 20.4.3

我安装的版本是当前最新的20.4.3,以下的测试也是基于此版本。

部署一个新的虚拟环境

使用命令行工具输入如下命令,会在当前路径下自动创建一个ENV文件夹,该文件夹名即生成的虚拟环境名。

// 默认生成的虚拟环境不含全局模块
PS C:\Users\xzhang\virtual_env> virtualenv ENV
// 添加--system-site-packages,携带全局模块
PS C:\Users\xzhang> virtualenv --system-site-packages ENV2

注意此时该环境默认是不包括全局环境中的第三方包的,我们也可以在.\Lib\site-packages下看到该环境下已经安装的模块。这也代表我们可以通过删除该文件夹销毁掉该虚拟环境,而不会对全局Python环境产生任何影响。

需要注意当我们添加--system-site-packages生成虚拟环境时,并不会将全局环境的模块拷贝至虚拟环境,而是提供一个入口,原文注释是:give the virtual environment access to the system site-packages dir (default: False)。

经过测试有以下两点注意:

  • 在虚拟环境中,无法修改、删除全局模块。
  • 在虚拟环境中,可以安装与全局模块同名模块的不同版本,在虚拟环境中优先使用虚拟环境内的版本,

激活虚拟环境

输入如下命令,将激活该虚拟环境,注意此时在命令行开头出现了(ENV)。此时表示当前工作在名为ENV的虚拟环境中。

PS C:\Users\xzhang\virtual_env> ENV\Scripts\activate
(ENV) PS C:\Users\xzhang\virtual_env>

之后,我们可以通过pip list查看该虚拟环境中的模块,通过python xxx.py在虚拟环境中运行py文件。

关闭虚拟环境

输入如下命令,将关闭虚拟环境。可以看到原来命令行开头(ENV)消失了。

(ENV) PS C:\Users\xzhang\virtual_env> deactivate
PS C:\Users\xzhang\virtual_env>

另外当我们关闭命令行窗口时,即表示退出该虚拟环境。也就是说只有当前命令行程序在使用该Python虚拟环境,我们可以同时运行多个虚拟环境而互不干扰。

vscode中虚拟环境的使用

在工作中,我们往往直接使用VSCode运行和调试Python,目前最新版VSCode也是支持虚拟环境配置的。步骤如下:

  1. setting中搜索python::virtual,在 Venv Path中输入虚拟环境所在文件夹的绝对路径,在 Venv Folders中添加虚拟环境名(即虚拟环境文件夹名),具体操作如下图。
    在这里插入图片描述

  2. 点击VSCode底部Status BarPython(Extension)按钮。

    在这里插入图片描述

  3. 在顶部弹出的窗口中选择你要使用的虚拟环境。

    在这里插入图片描述

这时,当你打开一个powershell终端,你可以看到开头出现了(ENV)之类字样,证明当前正运行在ENV虚拟环境中。

模块导出与导入

前面说到默认新建的虚拟环境第三方模块是空的,那么模块的备份管理的需求同样是迫切的。以下介绍如何导入和导出模块包。

模块导出

输入如下命令,将在当前路径下生成一个requirements.txt文件,该文件内保存当前环境的所有第三方依赖包。

PS C:\Users\xzhang> pip freeze > requirements.txt

模块导入

输入如下命令,将当前路径下requirements.txt文件中的模块包安装至当前环境

PS C:\Users\xzhang> pip install -r requirements.txt
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
安装virtualenvwrapper和virtualenv之前,你需要确保已经安装了Python。在macOS上,Python通常预装在系统中。你可以通过在终端中运行以下命令来检查Python是否安装: ``` python --version ``` 如果Python已经安装,你应该能够看到Python的版本号。 接下来,我们将安装virtualenvvirtualenvwrapper。你可以使用pip,Python的包管理器,来安装它们。在终端中运行以下命令: ``` pip install virtualenv virtualenvwrapper ``` 安装完成后,我们需要设置virtualenvwrapper的环境变量。打开终端配置文件(通常是.bashrc或.zshrc,根据你使用的shell不同可能会有所不同),并添加以下行: ``` export WORKON_HOME=$HOME/.virtualenvs export PROJECT_HOME=$HOME/Devel source /usr/local/bin/virtualenvwrapper.sh ``` 保存文件并重新加载配置文件: ``` source ~/.bashrc ``` 或 ``` source ~/.zshrc ``` 现在,我们可以使用virtualenvwrapper创建Python虚拟环境。首先,我们需要创建一个用于存储虚拟环境的目录。在终端中运行以下命令: ``` mkdir -p $WORKON_HOME ``` 接下来,我们可以使用mkvirtualenv命令来创建一个新的虚拟环境。例如,要创建一个名为myenv的虚拟环境,请运行以下命令: ``` mkvirtualenv myenv ``` 创建完成后,我们可以使用workon命令激活虚拟环境: ``` workon myenv ``` 现在,你已经在myenv虚拟环境中了。你可以使用pip在这个环境中安装任何Python包。 当你完成工作并想要退出虚拟环境时,请运行deactivate命令: ``` deactivate ``` 如果你想删除虚拟环境,请运行rmvirtualenv命令: ``` rmvirtualenv myenv ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值