python虚拟环境及其在项目实践中的应用

本文介绍了在Python开发中如何为多个项目创建共享的虚拟环境,以解决不同项目依赖不同版本库的问题。详细步骤包括创建虚拟环境、在项目中自动加载虚拟环境并启动Python程序,适用于Linux和Windows系统。

1.问题的提出

假设我正在开发若干python项目,这里假定项目名分别为Project1Project2,这两个项目都用到了同样版本的python扩展库numpy20.1,而我的电脑的python安装目录下已经有numpy21.1(这里称之为主python环境),为了确保我的2个项目都能运行,就不能使用主python环境,因为python扩展库高版本很可能不对低版本兼容。怎么办?
答案就是:为共同使用同一python依赖包的所有项目创建共同的python虚拟环境

1.什么是python虚拟环境

Python虚拟环境是一个隔离的Python环境,允许用户安装和管理不同的依赖关系。它可以从电脑独立开辟出来,将一个项目的依赖性与另一个项目分开,这里的依赖性是指任何模块、库或包。每个项目都有一个特定版本的依赖关系。Python虚拟环境包含了一个特定版本的Python和一个包含相关项目的依赖性的文件夹。

2.如何创建

2.1第1步-为共享同一虚拟环境的项目创建共同的父目录

以上面的问题为例,可以在本地磁盘某个目录下,如/home/imagan,为Project1Project2创建父目录,例如:/home/imagan/mypythonproject

2.2第2步-在父目录下创建虚拟python环境

这里仅介绍python内置命令venv来创建虚拟环境。
这里以linux系统为例,介绍创建过程:

  • 启动命令行,进入mypythonproject目录
  • 执行如下命令:
$ python3 -m venv myenv   # 创建一个名为myenv的虚拟环境
  • 在虚拟环境下安装各种需要的扩展库,例如上面提到的numpy20.1
$ source myenv/bin/activate  # 激活虚拟环境
(myenv)...$ python -m pip install --upgrade pip   #升级pip到最新版,这个很必要,有时候安装第三方扩展库不成功,往往因为pip版本太低。
(myenv)...$ pip install -i https://mirrors.aliyun.com/pypi/simple/  numpy==20.1  # 这里使用阿里云或其他国内镜像,有利于加快第三方扩展库的下载速度。
... $  deactivate  # 退出虚拟环境

2.3在父目录下创建各个项目文件夹

各个项目的代码各自放在父目录下。
如果希望用第三方软件,如pycharm,可以在创建项目时,把前面创建的虚拟环境添加到当前项目中。具体请参考有关帮助。

3 如何自动加载虚拟环境并启动python程序?

只需要编写一个启用运行你的python主文件(相当于程序的入口文件-main文件)的脚本即可,
假设我的虚拟环境目录与我的project1目录层次结构如下:

  • myvenv

    • bin
      • activate
  • project1

    • main.py
      若希望在运行main.py时自动加载虚拟环境,可以在project1目录下编写一个脚本文件,windows系统不多介绍了,这里重点介绍linux系统(以deepin为例),这个脚本文件为run,其放置的位置如下:
  • myvenv

    • bin
      • activate
  • project1

    • main.py
    • run

    该脚本文件的脚本如下:

#!/bin/bash
source ../myvenv/bin/activate
python main.py

在命令行执行如下命令,将run的权限设为可执行:
在这里插入图片描述则从此,只需双击run文件,即可自动加载虚拟环境并执行main.py为入口的python脚本程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aganim

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值