文章目录

  • Python 多版本管理
    • 1. 多版本使用需求
    • 2. Windows 下多版本管理[^1]
    • 3. Linux 系统下多版本管理[^2]
  • Python 虚拟环境配置
    • 1. 原理和配置需求
      • 操作系统的环境变量
      • 虚拟环境运行和 PATH 修改
      • Python解释器和虚拟环境关系
    • 2. 安装 & 配置
      • 使用 Virtualenv 管理[^3]
      • 使用 venv 管理
      • 使用 [pipenv](https://pipenv.pypa.io/en/latest/) 管理
    • 3. 激活 & 退出
    • 4. Anaconda 虚拟环境管理
    • 5. 与开发工具配合
      • Visual Studio Code
      • Pycharm
    • 6. Python 开发环境部署
    • VS Code开发环境使用过程常见问题
    • 1. 同级目录模块调用

持续更新…

Python 多版本管理

1. 多版本使用需求

场景1:如果我们想在python3上运行2.x版本的代码,就需要对代码进行大量的修改,产生不必要的工作量。

2. Windows 下多版本管理1

步骤 1:官网 (速度慢)或者国内镜像(速度快)下载Python 对应版本;

步骤 2: 点击可执行文件安装 Python,注意选择“Add python.exe to Path”

步骤 3: 打开 CMD,查看当前电脑下有哪些 Python 版本和安装位置;

> where python
C:\Users\***\AppData\Local\Programs\Python\Python39\python.exe
C:\Users\***\AppData\Local\Programs\Python\Python37\python.exe> python --version  # 查看默认版本 或者python -V
Python 3.9.4

打开 python 的文件路径,或者右键 python 快捷方式打开 “打开文件位置” 找到 Python 的安装位置;

步骤 4 : 打开任意版本的 Python,并执行脚本命令;

​ 方法1: 修改环境变量,将目标版本的 Python 路径添加到环境变量中,调用参数打开对应版本。

> py -3.9 # 快速启动 python 3.9
> py -3.7 # 快速启动 python 3.7> py -3.9 -V # 查看详细版本 > py -3.7 helloworld.py # 打开 python 2 脚本

​ 方法2:复制一份重命名为python39.exe。注意是复制一份重命名,而不是直接重命名。

步骤 5 : 多版本共存对应版本的 pip 管理;

# 多版本共存查看 pip 版本
> python -m pip -V / pip -V # 查看默认 pip 版本
pip 21.1.1 from C:\Users\***\AppData\Local\Programs\Python\Python39\lib\site-packages\pip (python 3.9)
> py -3.7 -m pip -V
pip 20.1.1 from C:\Users\***\AppData\Local\Programs\Python\Python37\lib\site-packages\pip (python 3.7)# 卸载pip
> python -m pip uninstall pip setuptools# 多版本共存升级pip
> python -m pip install --upgrade pip
> py -3.7 -m pip install --upgrade pip # python 3.7 的pip更新
若更新好,重新运行命令,发现
Requirement already satisfied: pip in c:\users\octob\appdata\local\programs\python\python37\lib\site-packages (21.1.1)# 多版本共存如何 pip 安装
> pip install requests # 默认 python 关联的 pip 命令安装,安装在python3.9(默认)下
> py -3.7 -m pip install requests # python3.7 关联 pip 命令安装,安装在python3.7下> python -m pip list # 查看 list ,安装在C:\Users\***\AppData\Local\Programs\Python\Python39\Lib\site-packages
> python -m pip list --outdated  # 检查哪些包需要更新

3. Linux 系统下多版本管理2

步骤 1: 查看 Linux 默认安装的 Python 位置

$ whereis python # 多版本 python 安装位置
$ which python  # 默认 python 的位置
$ ls -l /usr/bin/python*  # 了解软链接
  • 软链接说明

步骤 2: 安装目标版本 Python

  1. 官网 (速度慢)或者国内镜像(速度快)下载Python 对应版本;
  2. 解压;
  3. 准备编译环境;
  4. 编译安装;
$ wget http://python.org/ftp/python/2.7/Python-2.7.tar.bz2$ tar -zxvf Python-3.6.5.tgz
$ yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel $ readline-devel tk-devel gcc make# 编译安装(进入 Python-3.6.5 目录)
$ ./configure --prefix=/root/training/Python-3.6.5
$ make && make install

步骤 3: 多版本 Python 管理

$ sudo rm /usr/bin/python$ python
~bash: /usr/bin/python: No such file or directory # 删除后没有对应$ ln -s /usr/bin/python2.7 /usr/bin/python  # 建立软链接
$ # 建立目标对应链接$ python$ python3

步骤 4: 多版本 Pip 管理

  1. 创建软链接;
  2. 配置环境变量
# 安装pip前需要前置安装setuptools
$ wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-19.6.tar.gz#md5=c607dd118eae682c44ed146367a17e26
$ tar -zxvf setuptools-19.6.tar.gz
$ cd setuptools-19.6
$ sudo python3 setup.py build
$ sudo python3 setup.py install# 安装pip
$ wget --no-check-certificate  https://pypi.python.org/packages/source/p/pip/pip-8.0.2.tar.gz#md5=3a73c4188f8dbad6a1e6f6d44d117eeb
$ tar -zxvf pip-8.0.2.tar.gz
$ cd pip-8.0.2
$ sudo python3 setup.py build
$ sudo python3 setup.py install# 检查
$ pip -V# 不同版本 pip 下载包
$ pip install numpy
$ pip3 install numpy# 配置环境变量(直接使用pip,easy——install, 制订pip安装路径)
$ vi ~/.bash_profile
export PYTHON_HOME=/root/training/Python-3.6.5
export PATH=$PYTHON_HOME/bin:$PATH保存退出(:wq)
$ source ~/.bash_profile
$ echo $PYTHON_HOME

Python 虚拟环境配置

1. 原理和配置需求

虚拟环境并不是什么新技术,主要是利用了操作系统中环境变量以及进程间环境隔离的特性

操作系统的环境变量

可以为程序提供信息和做信息交换介质,进程可以共享操作系统中的环境变量,也可以为进程指定环境变量,其中 PATH 是很重要的环境变量,用于为操作系统和程序提供可执行文件的访问路径,例如写一个程序 a.exe,存放在 D:\MyProgram 中,在命令行中执行 a.exe ,会得到提示“ 无法找到程序 a.exe”,为了让系统找到,可以将 D:\MyProgram 路径加入到 PATH 环境变量中,当输入 a.exe 时,操作系统就会从 PATH 所提供的路径中逐个查找,这时就可以找到了。Linux 和 MacOS 具有相似的特性,甚至比 Windows 的功能更丰富。

虚拟环境运行和 PATH 修改

Python 虚拟环境就是利用这个特性构建的,在激活虚拟环境之时,激活脚本会将当前命令行程序的 PATH 修改为虚拟环境的,这样执行命令就会在被修改的 PATH 中查找,从而避免了原本 PATH 可以找到的命令,从而实现了 Python 环境的隔离。

Python解释器和虚拟环境关系

  • 一个操作系统下,可以有多个“操作系统级别的” Python解释器
  • 每个Python解释器有一个指向自己的pip工具,两者一一对应
  • 通过virtualenv可以虚拟任何一个“操作系统级别的”Python解释器成为一个“虚拟级别”的解释器;
  • 每个“虚拟级别”的解释器又拥有自己独立的pip工具和site-packages

2. 安装 & 配置

使用 Virtualenv 管理3

要点:

  1. python3.3 之前,只能通过 virtualenv 创建虚拟环境
  2. virtualenv 可以指定 python解析器版本,但必须是在本地已安装。
> pip install virtualenv # 默认 Python 位置安装 virtualenv
> virtualenv --no-site-packages myvenv # 创建在当前目录
--no-site-packages: 复制主环境中安装的第三方包
-p: 用于指定 Python 解析器,就是安装好的 Python 应用程序,默认为当前环境中的 Python
–no-pip:不需要安装 pip,默认为安装
–clear:如果创建虚拟环境的目录已经有了其他虚拟环境,清楚重建

使用 venv 管理

要点:

  1. 因为 venv 是依附于一个 Python 解析器创建的,所以不需要指定 Python 解释器版本
  2. python 3.3 以后版本,可以通过自带模块 venv 创建虚拟环境
> python -m venv myvenv
–without-pip: 不需要安装 pip,默认为安装
–clear:如果创建虚拟环境的目录已经有了其他虚拟环境,清楚重建

使用 pipenv 管理

pipenv是Python官方推荐的包管理工具。 它综合了 virtualenv , pip 和 pyenv 三者的功能。能够自动为项目创建和管理虚拟环境。 pipenv使用 Pipfile 和 Pipfile.lock 来管理依赖包,并且在使用pipenv添加或删除包时,自动维护 Pipfile 文件,同时生成 Pipfile.lock 来锁定安装包的版本和依赖信息,避免构建错误。相比pip需要手动维护requirements.txt 中的安装包和版本,具有很大的进步。详细使用方法,可参考这篇文章45

# 下载
$ pip install pipenv
# 创建环境并安装
$ cd myproject
$ pipenv install # 创建环境
$ pipenv install requests # 或者直接安装库
# 如果不存在pipfile,会生成一个pipfile,并且如果有的库添加会自动编辑该文件,不会我们手动更新requirements.txt文件了。
# 激活
$ pipenv shell
$ python --version

3. 激活 & 退出

通过 virtualenv 和 模块 venv 创建的虚拟环境,激活方式是一样的,即运行激活脚本

  • Windows 系统中,激活脚本路径是 <myvenv>\Scripts\activate.bat,如果是 powershell 命令行,脚本换成 Activate.ps1 , 注意将 <myvenv> 换成你自己的虚拟环境目录
  • Linux 系统中,激活脚本路径是 <myvenv>/bin/activate,默认脚本没有执行权限,要么设置脚本为可执行,要么用 source 命令执行,例如source myvenv/bin/activate

检验是否已激活

$ echo $PATH # linux 下
> echo %PATH% # window 下

退出虚拟环境很简单,只需要执行 deactivate 命令就行

linux:

$ deactivate

Windows 10:

> .\Scripts\deactivate.bat

4. Anaconda 虚拟环境管理

conda可以直接创建不同python版本的虚拟环境。前面讲的virtualenv只是指定创建不同python版本的虚拟环境,前提是你的电脑上已经安装了不同版本的python,与conda相比没有conda灵活。

# 查看 Python 环境
conda info --env# 创建一个python3.5的环境,我们把它命名为python35
conda create --name python35 python=3.5 # 安装
conda create --name python35 python=3.5 # numpy scipy #创建环境并安装包
conda create --name python37 --clone python37 # 克隆方式闯将环境# 激活环境并在环境中安装必要包( mac/linux 系统中需命令首加上 source)
conda activate python35 # 物理路径在D:\Anaconda\envs
conda deactivate python35
conda/pip install numpy# 迁移环境
conda list --explictit > bio-env.txtconda env export > py36.yaml
conda env create -f py36.yaml # conda 安装的
pip freeze > requirements.txt
pip install -r requirements.txt # pip 安装的pip install -r requirements.txt -i http://pypi.douban.com/simple --trusted-host pypi.douban.com# 删除 python35
conda remove -n python35 --all# help
conda --help

详细命令见conda Cheet Sheet

5. 与开发工具配合

Visual Studio Code

按下 Ctrl+Shift+P, 在弹出的命令窗口中输入 “解析器”,然后在下拉列表中选择 “Python:选择解析器”,这里会缓存一些已经创建好的解析器,如果没有想要的,可以选择 “Enter interpreter path” 来选择解析器路径,即已经创建好的虚拟环境脚本文件夹中的 Python 程序,就可以创建一个新的解析器。

Pycharm

创建项目时,在项目创建对话框中,可以创建或者选择已经已有的解析器

其他参考67

6. Python 开发环境部署

此部分拷贝自Python 虚拟环境 看这一篇就够了

之所以在开发时选择虚拟环境,除了避免库之间的冲突,还有重要的原因时方便部署,因为虚拟环境时独立的,仅包含了项目相关的依赖库,所以部署的效率更高,风险更小

一般部署流程是:

  1. 开发完成后,使用 pip freeze > requirements.txt 命令将项目的库依赖导出,作为代码的一部分
  2. 将代码上传到服务器
  3. 在服务器上创建一个虚拟环境
  4. 激活虚拟环境,执行 pip install -r requirements.txt,安装项目依赖

怎么运行项目,需要看项目的具体情况

  • Web 项目 Web 项目一般使用 Django、Flask 的 Web 开发的提供 Web 服务的项目,部署时需要一个 Web 容器,作为程序的运行环境,容器的配置中都有一个虚拟环境的设置,其实是指定 Python 解析器的路径,将其设置为虚拟环境的目录或者 Python 解析器就可以了,启动时就用使用虚拟环境,并与其他环境隔离。例如 uWSGI 配置文件中 home 参数是用来指定解析器的。
  • 服务类项目 服务类项目就是需要以服务的形式长时间运行的,例如之前介绍的 公交闹钟,或者一些定时爬虫之类的,对于 Linux 而言,当前主流的服务方式是 Systemd,是一种比 init 更先进的服务管理工具,在服务脚本中, 设置 ExecStart 执行命令为全路径的虚拟环境的 Python 解析器,服务启动时,使用独立的虚拟环境了。 Windows 服务,对于达成 EXE 包的,不需要配置虚拟环境,因为打包时已经考虑了环境问题了,如果时脚本运行的话,需要指定全路径的 Python 解析器
  • 单次运行项目 对于一些测试或者实验性质的项目,大多数情况下手动执行,只要在激活的虚拟环境下,或者用特定的 Python 解析器运行就好了,和在开发过程中运行区别不大

VS Code开发环境使用过程常见问题

1. 同级目录模块调用

在 comb_analyser.py 下 想调用 config 下配置文件。

方法1:在 comb_analyser.py 中添加 如下片段

import sys,os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # __file__获取执行文件相对路径,整行为取上一级的上一级目录
sys.path.append(BASE_DIR)

方法2:在setting.json中添加自动寻找路径(此方法测试不成功)

    "python.autoComplete.extraPaths": ["e:/engine-fault-diagnosis-signal_processing","e:/engine-fault-diagnosis-signal_processing/config"]

  1. python多版本安装 ↩︎

  2. Linux下多版本python与多版本pip以及对应安装库包管理 ↩︎

  3. virtualenv 虚拟环境 ↩︎

  4. Pipenv:新一代Python项目环境与依赖管理工具 ↩︎

  5. Pipenv——最好用的python虚拟环境和包管理工具 ↩︎

  6. 最全的Python虚拟环境使用方法 ↩︎

  7. Python 虚拟环境 看这一篇就够了 ↩︎

一文读懂 Python 开发环境配置相关推荐

  1. python读取枚举_一文读懂Python 枚举

    enum是一组绑定到唯一常数值的符号名称,并且具备可迭代性和可比较性的特性.我们可以使用 enum 创建具有良好定义的标识符,而不是直接使用魔法字符串或整数,也便于开发工程师的代码维护. 创建枚举 我 ...

  2. python开发环境配置以及其简单的运行方式

    python开发环境配置 1.开发环境的安装 到python主页上选择下载自己所需要的python版本,以下是其链接 python主页. 点击下载,选择系统(这里演示wondows系统)如下图: 选择 ...

  3. python输入什么就输出什么_一文读懂Python的输入和输出

    本文介绍了Python的输入和输出,既然是Python代码,那么就一定有输出量,那么,Python是如何输出的呢? 输出 用print()在括号中加上字符串,就可以向屏幕上输出指定的文字.比如输出'h ...

  4. Eclipse python 开发环境配置

    Eclipse python 开发环境配置 由于项目需要用到脚本配置的东西,看了看Python能够做到基本上需要的工作,选择了 2.7.3稳定版本来进行测试开发. 转自: Eclipse+python ...

  5. 1.2 Python开发环境配置 | Python语言程序设计(嵩天)

    文章目录 课程简介 第一章 Python基本语法 1.2 Python开发环境配置 Python语言概述 Python开发环境IDLE python的安装与环境配置 Python基本开发环境 Pyth ...

  6. 一文读懂python本地开发环境配置

    python和java包管理的不同 java java需要安装jdk,我们通常使用maven进行包管理,有中央仓库,有本地仓库,项目优先从本地仓库拉取,拉不到会从远程仓库拉取,所有项目用到的包都会放在 ...

  7. python开发环境配置config_manjaro与python开发环境配置

    1.manjaro配置 1.1.启动项 sudo update-grub 注:Manjaro(archLinux)系统时间快8小时--> sudo timedatectl set-local-r ...

  8. python开发环境配置_百度资讯搜索_python开发环境配置

    金生水起程序猿 2020年11月14日 11:20下载完成后就可以安装Python了,在安装过程中会弹出内容选择对话框,选中复选框Add Python 3.x to PATH,可以将Python的安装 ...

  9. 使用Vscode进行Python开发环境配置

    Vscode是是一个强大的跨平台工具,我自己电脑是mac,公司电脑是win而且是内部环境,导致公司安装软件很费劲.好在vscode许多插件能直接离线安装,省去了很多麻烦. 很多人学习python,不知 ...

最新文章

  1. php ahp和jhp,php7.4编译(centos)
  2. python 倒计时_Excel制作竞答倒计时器
  3. 重建控制文件的案例(RESETLOGS模式和NORESETLOGS模式)
  4. java applet配置_配置Java Applet的运行环境
  5. OpenCV学习笔记二
  6. vue面试题,知识点汇总(有答案)
  7. Mysql 新增用户可访问指定数据库所有权限
  8. batchsize一定是2的幂_学习率和batchsize如何影响模型的性能?
  9. 两道关于回溯法,分支限界法的算法题
  10. [linux shell]比较运算符小坑(unary operator excepted 期望的一元运算符错误)
  11. 戴尔公司大中华区总裁黄陈宏 要烧哪三把火
  12. 初中高中睡前必看古诗名句
  13. python基础之socket编程 (转自林海峰老师)
  14. Java 获取服务器ip地址
  15. jitsi各工程编译笔记(一)各工程大概
  16. 如何利用whatsapp群发助手开发国外客户
  17. 语料标注平台BRAT安装说明
  18. 逻辑函数的公式化减法
  19. 新技能get!用 Python 高效背单词!
  20. Word插入题注快捷键

热门文章

  1. WebSocket前后端实现
  2. 模仿ofo小黄人眼睛跟随手机移动
  3. 理论+实操:防火墙NAT策略
  4. 8.14 猪王争霸 2693
  5. dhcp地址分配信息是什么_DHCP动态网段分配|必看
  6. 省联社再下一城,陕西信合选择携手菊风共建远程银行服务平台
  7. tripwire 原理
  8. 如何制作Viz Artist插件-理论篇
  9. Python问题:SyntaxError: Non-ASCII character '\xe2'
  10. 小学计算机实验考查总结,2020年小学实验考查工作总结