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

本文介绍了如何管理和维护Python环境,特别是针对新手。内容包括Python环境的不同级别,如系统级别的Python2和Python3,以及如何创建和使用Python虚拟环境。通过虚拟环境避免系统Python环境污染,讲解了`virtualenv`的使用,包括建立、激活、安装依赖及退出。还提到了依赖库镜像的配置以加速安装速度,良好的项目文件夹结构,以及虚拟环境导出的方法。最后,鼓励读者加入交流群学习更多Python环境管理技巧。
部署运行你感兴趣的模型镜像

点击上方“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

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

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

<think>好的,用户想了解如何配置OpenPose的环境,而且是一个小白,不会Python。首先,我需要确定OpenPose的配置主要依赖哪些工具环境。通常,OpenPose是基于C++的,但可能需要CMake来编译,以及CUDAcuDNN如果使用GPU。不过用户不会Python,可能需要指导他们使用预编译的版本或者更简单的步骤。 接下来,用户可能使用的是Windows系统,因为大多数小白用户可能更倾向于Windows。不过也有可能用Ubuntu,但需要确认。假设是Windows,我需要列出步骤,比如安装Visual Studio、CMake、CUDA、cuDNN,然后下载OpenPose源码,用CMake配置,生成解决方案,用VS编译。这个过程可能会有很多坑,比如版本兼容性问题,需要指出注意事项。 另外,用户提到不会Python,但OpenPose本身也有Python接口,不过如果用户不需要的话,可以忽略。可能需要提醒用户如果以后需要Python支持的话,可能需要额外步骤,但当前可以跳过。 然后,我需要考虑用户可能遇到的问题,比如依赖项下载失败,编译错误,或者GPU驱动问题。应该给出一些常见问题的解决办法,比如检查CUDA版本是否匹配,确保路径正确,或者建议使用预编译的二进制文件节省时间。 另外,是否有更简单的方法?比如使用Docker镜像,但这对小白来说可能也有难度。或者推荐他们使用已经配置好的虚拟机或者第三方提供的安装包。不过这可能不太常见,所以还是按照官方步骤来更稳妥。 最后,需要组织语言,分步骤说明,确保清晰易懂,避免使用专业术语过多,必要时解释术语,比如CMake的作用,CUDA是什么。同时,提醒用户耐心等待编译,因为可能需要较长时间。</think>以下是为零基础小白整理的OpenPose环境配置指南(无需Python基础): 一、💻 基础准备 1. 操作系统:建议使用 Windows 10/11 或 Ubuntu 18.04+ 2. 硬件要求: - 显卡:NVIDIA GPU(需支持CUDA) - 显存:建议 ≥4GB - 内存:建议 ≥8GB 二、📥 软件安装(Windows版) 1. 安装 Visual Studio 2019 - 社区版免费 - 安装时勾选「C++桌面开发」 2. 安装 CUDA 工具包 - 官网下载 CUDA 11.1~11.8 版本 - 安装时选择默认路径 3. 安装 cuDNN - 需注册NVIDIA账号下载 - 解压后复制到 CUDA 安装目录 4. 安装 CMake - 官网下载最新版 - 安装时勾选「Add to PATH」 三、⚙️ OpenPose配置步骤 1. 下载源码 ```bash git clone https://github.com/CMU-Perceptual-Computing-Lab/openpose ``` 2. 生成工程文件 - 打开CMake GUI - 设置源码路径:`openpose根目录` - 设置生成路径:`openpose/build` - 点击Configure → 选择VS2019 → 点击Generate 3. 编译安装 - 打开生成的 `OpenPose.sln` - 选择Release模式 - 右键ALL_BUILD → 生成(约需1-3小时) 四、✅ 验证安装 在命令提示符运行: ```bash bin\OpenPoseDemo.exe --video examples\media\video.avi ``` 看到实时姿态估计画面即成功 五、⚠️ 常见问题解决 1. CUDA版本不匹配:需完全卸载旧版本后重装 2. 编译卡死:检查是否选择Release模式 3. 缺少DLL文件:安装最新的VC++运行库 4. 显存不足:添加 `--net_resolution -1x320` 参数 建议首次配置预留3-5小时完成整个过程,遇到报错时注意查看错误日志中的行号提示。如果反复失败,可尝试下载预编译版本(需NVIDIA开发者账号申请)。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值