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

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,可以在创建项目时,把前面创建的虚拟环境添加到当前项目中。具体请参考有关帮助。

相关推荐

  1. python虚拟环境及其项目实践应用

    2023-12-28 01:58:02       41 阅读
  2. 混淆矩阵及其 Python 应用

    2023-12-28 01:58:02       34 阅读
  3. 传感器和辐射成像原理及其 Python 应用

    2023-12-28 01:58:02       38 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-28 01:58:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-28 01:58:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-28 01:58:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-28 01:58:02       18 阅读

热门阅读

  1. Sqlserver数据库触发器sql案例

    2023-12-28 01:58:02       39 阅读
  2. Redis——IO多路复用

    2023-12-28 01:58:02       41 阅读
  3. CTE和递归查询

    2023-12-28 01:58:02       36 阅读
  4. Best Arm Identification in Batched Multi-armed Bandit Problems

    2023-12-28 01:58:02       31 阅读
  5. 【Qt-正则表达式】

    2023-12-28 01:58:02       38 阅读
  6. Android Camera相关类功能整理

    2023-12-28 01:58:02       36 阅读
  7. Mybatis之增删查改

    2023-12-28 01:58:02       44 阅读
  8. 【软件测试】面试题之接口测试篇

    2023-12-28 01:58:02       34 阅读
  9. TDD和FDD两种模式下信道估计的主要区别

    2023-12-28 01:58:02       31 阅读
  10. 树莓派安装mariadb & redis

    2023-12-28 01:58:02       34 阅读
  11. Redis过期key清理机制

    2023-12-28 01:58:02       38 阅读
  12. Qt读写ini文件,出现中文乱码问题

    2023-12-28 01:58:02       39 阅读
  13. [spark] DataFrame 的 checkpoint

    2023-12-28 01:58:02       42 阅读
  14. mysql修改密码

    2023-12-28 01:58:02       37 阅读