小白遇到多个Python环境乱如麻,如何破?

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

点击上方“AI派”,选择“设为星标
最新分享,第一时间送达!
640?wx_fmt=jpeg
640?wx_fmt=gif
作者:Leon Wang,现为中科院特别研究助理 (博士后),在 AI、数据科学和科学计算等方面相关的工程实践上积累了丰富的经验。
编辑:王老湿

大家好,我们的

前面的文章中,为大家介绍过一个脚本,可以自动安装一些数据分析常用的Python依赖。但是,为了让系统里面的Python环境不会变得越来越乱,一般我们会把依赖库安装到Python虚拟环境里面。此外,在平常工作中,有时候需要用到不同版本的Python环境,一些老项目用的Python2,新开发的项目用的Python3,如何共存多个版本的Python,这也难倒了不少的新手小白。所以希望通过今天的这篇文章能帮助大家对Python的虚拟环境和包管理有一些认识和了解。

Python环境

Python环境的不同级别

一般我们默认安装Ubuntu后,在系统上就有Python2和Python3两种不同版本。Python2主要是用来运行系统相关或历史遗留的一些工具,而Python3是我们以后真正会使用的版本。通过which python3可以得知目前系统里安装的Python3的版本。

系统级别的Python3可执行程序在/usr/bin/下,对应账户root。依赖库安装的路径是/usr/lib/python3/dist-packages,而当前用户目录下也有~/.local/lib/python3.6/site-packages。根据我们用什么用户安装库,Python也会安装到对应账户路径下。

特别注意,dist-packages是Debian/Ubuntu下使用的命名,表示其中的库属于系统使用,一般通过系统的命令进行安装和卸载,与Python下管理的site-packages区别开。

除了上述的Python环境外,还可以使用的Python环境就是虚拟环境(Virtual environment)。虚拟环境是对Python环境进行隔离的机制,通过每个互相不影响的Python虚拟环境,我们可以让系统的Python环境尽量少的去安装各个项目所特有的依赖,避免系统Python环境受到污染。

Python虚拟环境

因为以后大家都只会用Python3,Python的虚拟环境就是pyvenv(命令是venv)。下面简单介绍虚拟环境相关的操作。

  • 建立

建立虚拟环境命令:

python3 -m venv venv_test

这里,python3 -m是启用某个Python3模块命令,命令中的第一个venv表示使用venv这个命令来建立虚拟环境。venv_test是虚拟环境的名字,这里只为简单演示。实际工作中,建议起的名字符合一定规律,比如venv_projectname_os,具体可以是venv_crftest_lin。后面的操作系统是为不混淆不同系统下的虚拟环境。因为不同系统的可执行文件和运行机制完全不同,所以相应虚拟环境也不可能通用。

我们可以观察,命令会自动建立一个venv_test的文件夹,下面内容有:

ls venv_test 
bin  include  lib  lib64  pyvenv.cfg  share

bin目录中,就存在python等常用的可执行命令:

activate      activate.fish  easy_install-3.6  pip3    python
activate.csh  easy_install   pip               pip3.6  python3

  • 激活

激活一个虚拟环境,就需要用bin下的activate

source venv_test/bin/activate

其中,venv_test是虚拟环境的名称。

很多文章里面还一直提virtualenv,这个虚拟环境工具的主要优势是支持Python2,劣势是建立环境比较慢。

激活后,可以用which python确认是否成功。如果成功,当前python应该指向的是venv_test/bin/python

  • 安装依赖

激活一个环境后,安装依赖就和普通Python环境下操作没太有什么区别:

python -m pip install  xxx

这里有个细节,只要是相对虚拟环境操作,就不需要用python3,而应该是python。另外,就是python -m pip比直接敲pip更规范,有保障,可以明确当前python和当前执行的pip的对应关系。不注意这方面,就特别容易导致一些环境中装的很杂乱的依赖。

  • 退出

直接运行deactivate,然后可以通过which python来确认。

实践

依赖库镜像

众所周知,安装Python依赖库的速度不快。我们需要设置镜像。Linux建立文件~/.pip/pip.conf,输入内容如下:

[global]
trusted-host=mirrors.ustc.edu.cn
                pypi.tuan.tsinghua.edu.cn
                mirrors.aliyun.com
                pypi.douban.com
                pypi.python.org
index-url=https://pypi.tuna.tsinghua.edu.cn/simple
extra-index-url=http://mirrors.aliyun.com/pypi/simple
            https://mirrors.ustc.edu.cn/pypi/web/simple/
            http://pypi.douban.com/simple/
            https://pypi.python.org/pypi/
timeout = 20
require-virtualenv = false
format=columns 

[install]
use-mirrors = true
mirrors = http://pypi.douban.com/simple/

这里的配置启用了多个镜像服务器,可有效加速依赖安装速度。

Windows下同样可以使用相同配置,但要在 user 目录中创建一个 pip 目录,如:C:\Users\xx\pip,新建文件 pip.ini,内容同pip.conf

如果不想设置文件,也可以通过命令临时使用镜像。例如,python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple xxx

文件夹结构

一个好的项目结构,会让使用者心情愉悦头脑清晰。通过观察许多开源项目,以及自己工作实践,和Python环境相关的一些常见的习惯如下:

  • requirements文件

如果只有一个requirements.txt, 可以直接放在项目根目录下,比较容易找到。如果有多个,建议放在deps文件夹。同时,考虑一些习惯命名,比如开发者使用requirements-dev.txt

另外,多个requirements之间可以存在引用关系。一般来说,普通用户需要的依赖,开发者也需要。这时的requirements-dev.txt可以这样写:

-r requirements.txt

# development specific requirements
...
sphinx
sphinx-rtd-theme
wheel
...

此时,我们只需要在相应文件里更新各自考虑的特殊需求,只写上自己独有的那部分依赖即可。

  • 虚拟环境命名

建议用venv或其他名称作为前缀,这样不仅容易形成规范和统一的样式,而且可以方便在.gitignore中写模糊匹配,忽略环境中的所有文件。

虚拟环境导出

虚拟环境直接拷贝使用,经常会有问题出现。需要虚拟环境可以把当前依赖信息导出,命令如下:

python -m pip freeze  > requirements.txt 

这里,推荐在熟悉的情况下,去掉二级依赖库(依赖的依赖)。一方面减少文件内容,第二有可能二级依赖在后面会被取消。

通过Python的原生生态,我们可以很方便的管理环境和依赖。但因为Python安装软件时缺少对版本和冲突的严格控制,而这方面anaconda的包管理采取了很多措施去解决这种问题。下一篇,我们将介绍anaconda和conda下的虚拟环境。

如果在学习中有遇到问题,可以加入我们的专栏学习群来一起交流,还没有加入的同学可以扫描下方的微信二维码,添加微信好友,之后统一邀请你加入交流群。添加好友时一定要备注:AI炼丹炉。 

640?wx_fmt=jpeg


恭喜上期通过留言成功混脸熟的读者:花、夜半开,赠送一本《TensorFlow与卷积神经网络从算法入门到项目实战

请中奖同学联系小编:wanglaoshi201907

640?wx_fmt=png

近期专栏推荐

1. 

2. 

3. 

4. 


640?wx_fmt=png

点下「在看」,给文章盖个戳吧!

如何使用anaconda配置多个python环境 如何使用anaconda配置多个python环境 如何使用anaconda配置多个python环境 我在github上面下载tensorflow的源代码时,经常会出现由于tensorflow版本不同,而导致报错,如:No module named ‘xxx’. 我们可以使用anaconda配置多个python环境,在各个python环境中再配置多个tensorflow环境。在遇到不同tensorf... 阅读详情

相关推荐

Arnold置变换的代码实现与置度分析

1. 传统Arnold置变换算法简介 Arnold置变换(又称为cat映射)是一种基于古典密码体制的图像加密算法,本质上是对长宽相等的图像进行拉伸与折叠操作以改变空间中像素点的位置,从而坏图像相邻像素点之间的相关性,它的安全性较低,易利用像素值统计特性攻击,常用作其它加密算法的预处理。 传统的Arnold置变换可表示为: [xn+1yn+1]=[1112][xnyn]mod(N)\begi...

idchannovの划水小天地 3473

解决方案:Python实现环境不一致问题

在虚拟环境中安装软件包时,这些软件包会被安装到特定的目录中,而不是全局Python环境中。这使得不同的项目能够使用不同的Python版本包集,而不会相互干扰。以上就是使用Python实现解决环境不一致问题的方法,通过使用venvconda等虚拟环境管理工具,可以很好地解决环境不一致的问题。在进行Python开发时,由于不同的依赖项包的版本差异,可能会导致环境不一致的问题。在使用venv创建虚拟环境时,需要指定虚拟环境的名称Python解释器的路径。接下来,就可以在虚拟环境中安装所需的软件包了。

code_welike的博客 1503

如何同时配置多个Python环境变量

本文解决的问题时,当安装了多个版本的Python时如何能随意的切换版本,即同时配置多个环境变量。 步骤一、拥有多个版本的Python。二、打开设置环境变量的窗口。1、打开 **控制面板** →点击 **系统安全** →点击 **系统** ,如下图红色框所示→点击 **高级系统设置** ,如下图蓝色框所示。2、点击 **环境变量(N)...** ,如下图红色框所示。3、点击 **系统变量** 的 **新建** ,如下图红色框所示。三、设置环境变量。输入以下内容:四、重复 二、 三、 多次,直至所有版本的P

qyly_zc的博客 8848

gyp ERR configure error gyp ERR stack Error: Command failed: C:....

gyp ERR! configure error gyp ERR!node.js与系统的python版本冲突 Py39降级为27

iiyue的博客 4670

关于电脑里七八遭的python环境

前提: 电脑中同时有python39(local文件夹下)anaconda,且anaconda安装在中文路径下,python39的activate文件在lib文件夹中,且lib文件夹没有添加到环境变量中,在环境变量中把python39放在anaconda的前面,我电脑中有一个python38环境,在roaming文件夹中,不过很诡异,内容非常少,只有两个文件夹 而且python38无法单独运行,即使把它移到环境变量的最前面它也运行不了 一系列问题: 问题一:anaconda的很多指令用..

sixian666的博客 3404

【window 安装多环境python冲突 -已解决】

解决python多个版本 环境冲突问题

Rosemajor的博客 2005

解决python多版本的冲突问题

python多版本冲突问题

W666097的博客 8878

python多版本共存】windows下多个python版本环境共存

windows下多个版本共存, 结合anaconda实现

小星星的博客 7881

linux环境下安装多个任意版本的python环境

linux环境下安装多个任意版本的python环境 安装方法可以归结为 [下载 + 编译 + 配置环境变量] 下载Python Windows下载发送到linux上 step1. 下载linux版本的pythonPython官网进入 选择Downloads - Allreleases step2. 选择版本下载 进入到下载页面 注意点击的是Release version那一列,我们需要下载源码的package包 step3. 选择xz的压缩包下载 在Release version链接下的Files中

immerseinstudy的博客 1万+

多语言环境大师:在PyCharm中管理多个Python解释器

PyCharm作为业界领先的Python集成开发环境(IDE),支持多种Python解释器的配置管理,使得开发者可以针对不同项目使用不同的Python环境。在开发过程中,不同的项目可能需要不同版本的Python解释器,或者需要同时使用Python多个版本进行开发。PyCharm提供了灵活的配置选项,允许用户为每个项目设置独立的Python解释器。通过本文的介绍,你应该对如何在PyCharm中设置管理多个Python解释器有了深入的理解。在PyCharm的终端或运行配置中,验证当前使用的解释器。

2402_85761468的博客 4524

Windows同时安装多个版本的Python

Python安装包的一个好处是,你可以安装多个不同版本的Python,但是相同版本的Python只能安装一个,第二次安装相同版本的Python时,会让你选择修改,修复或者卸载。 需要安装多个版本的Python时,在安装的过程中不要选择将Python的安装路径加入PATH环境变量中,安装完成后我们自己手动设置环境变量。 下边介绍如何安装多个版本的P...

u013992330的博客 3万+

Windows创建多个python虚拟环境步骤+Linux创建多个python虚拟环境

目录 windows下创建多个python虚拟环境 Linux下创建多个python虚拟环境 windows下创建多个python虚拟环境 操作系统:windows10 64 bit 本机环境python 3.6 一、创建Python 3.6 虚拟环境 1.创建python3.6虚拟环境,进入保存所有python虚拟环境的目录,直接使用virtualenv [虚拟环境目录的名称]...

fenghan2015的博客 1266

如何在Mac上安装多个Python环境

在你的Mac上使用多个Python环境可以对项目管理很有帮助,特别是在同时处理不同Python版本或不同的包需求时。在这篇文章中,我们将向你展示如何在Mac上轻松地安装管理多个Python环境

千寻简笔记《chihiro-notes》已开源|公众号:千寻简 1123

多个版本的Python如何不冲突?

转载文章,防止忘记或删除 转载于:电脑中存在多个版本的Python如何不冲突? - 知乎 (zhihu.com) 如何安装多版本的Python并与之共存? 如果你的工作涉及到Python多版本之间开发或测试,那么请收藏本文, 如果你安装完Python发现pip命令不能用,也请收藏本文。 「本文将解决两个问题,让大家能明白Python环境变量该怎么配置。」 准备工作 没有安装过任何Python的Win10的电脑(笔者使用虚拟机演示) 两个不同版本的Python安装包 在某个盘中创建一个Pyth

BG1230521的博客 6575

在Windows中实现多个Python环境的快速切换

在开发研究中,可以有效解决依赖冲突、兼容性问题,并提升项目的灵活性。通过合理地管理切换多个Python环境,开发者能够更高效、更安全地管理项目,确保项目之间相互独立,减少依赖冲突,为开发研究提供有力支持。然而,在Windows中实现Python环境的快速切换是一项挑战。除Anaconda、Virtualenv等常用管理工具外,本文将重点介绍如何通过快捷修改环境变量的方法来实现这一需求。

CrossProblems的博客 1381

使用Anaconda配置多个python独立环境

在日常跑代码过程中,需要适应不同的代码运行环境,配置很不方便。利用Anaconda可以配置多个独立的python环境,使代码的运行环境互不干扰。

ik99s的博客 9139

Python多个项目多个虚拟环境同时调用自己写的工具函数

Python多个项目多个虚拟环境同时调用自己写的工具函数,即使将来你的工具函数更新了代码,也不需要任何额外的操作。

地理信息系统、摄影测量与遥感、人工智能 8116

在统信UOS上如何设置多个Python环境

在统信UOS上设置多个Python环境,通常可以通过使用Python版本管理工具如pyenv或conda来实现。这里,我将以pyenv为例来说明如何设置多个Python环境

Flask Web 1946

如何在Windows下安装多个python3版本

有时候为了调试项目,公司的开发环境比本机安装的python版本要高,这时我们又不想升级本机的python版本,那就需要安装多个python版本来满足我们的需求。本文以Windows下已经安装了python3.8的情况下,再安装python3.9为例演示。

weixin_44200553的博客 5346
上一篇: 如何通过Pytorch代码可视化理解卷积神经网络
下一篇: 15 张 Vim 速查表奉上,帮你提高 N 倍效率!
Wang_AI
博客等级 码龄11年 937粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值