Python-虚拟环境(virtualenv)

前言

一般我们都是使用pip安装三方库,用起来很方便。但是所有项目的依赖都在一个环境中。

如果我们要把项目部署到服务器上面的话,就稍微有些麻烦了,因为还需要在服务器上用pip安装这些包,假如项目中用到很多包的话,一个个安装会很麻烦,而且没有通用性。

Java上的maven、gradle,NodeJS的npm这些工具就不存在这个问题,它们有一个或多个的专门的依赖文件来管理这些包。

pipenv就是这样一个类似的工具,可以帮助我们管理Python和第三方库的版本。

设置镜像

Windows

打开用户目录

1
%userprofile%

创建pip文件夹

创建pip.ini文件

内容如下:

1
2
3
4
[global]
index-url = https://mirrors.huaweicloud.com/repository/pypi/simple
trusted-host = mirrors.huaweicloud.com
timeout = 120

注意

不建议用阿里云的镜像,限速限的厉害。

验证是否生效

1
pip config list

Linux

Linux下,修改 ~/.pip/pip.conf(没有就创建一个文件夹及文件。文件夹要加.,表示是隐藏文件夹)

virtualenv

上面所说的pipenv,实际上就是依赖于virtualenv,我建议使用pipenv

因为virtualenv有以下几个问题

  • 导出依赖的时候也会导出依赖的依赖,这样依赖就会比较杂乱。
  • 不能区分项目依赖和开发依赖。
  • 使用不方便,每次部署前要先导出,然后在部署环境导入。

通过 virtualenv 来给每个项目独立创建包管理环境,并且可以独立出 Python 的运行环境。

  • virtualenv就是一个搭建虚拟化的python环境,便于不同的项目在同一台机器上开发运行。
  • 在生产环境中还是使用docker给不同的项目创建不同的容器,各自分开运行为好,不宜放在一个单独的物理机中运行。

安装依赖

1
pip install virtualenv

项目目录下运行

1
virtualenv venv

激活

1
.\venv\Scripts\activate.bat

一旦进入到虚拟环境中,安装、卸载库都是在这个虚拟环境中,不会影响到其他环境

退出

1
.\venv\Scripts\deactivate.bat

此时还需将当前工程的interpreter改为当前的虚拟环境,要不然会不起作用。

PyCharm中设置

File=>Settings

搜索Python Interpreter

image-20211129135707458

image-20211129135814066

依赖导出导入

项目下运行一下命令导出依赖

1
pip freeze > requirements.txt

在待部署机器上,使用以下命令安装就可以恢复依赖环境:

1
pip install -r requirements.txt

常见问题

问题1

CMake is not installed on your system!

安装

1
pip install cmake