Windows 下多版本 Python 共享 Poetry(qbit)

前言

  • 技术栈

    Windows 10
    Python  3.8.10
    Python  3.11.2
    pip     23.0.1
    pipx    1.2.0
    poetry  1.4.1
  • Python 3.8 安装目录

    C:\Python38
  • Python 3.11 安装目录

    C:\Python311

安装 poetry

  • 设置将以下路径加入 path 环境变量

    C:\Python38
    C:\Python38\Scripts
    C:\Python311
    C:\Python311\Scripts
    C:\Users\qbit\.local\bin\
  • 复制文件

    C:\Python38\python.exe -> C:\Python38\py38.exe 
    C:\Python311\python.exe -> C:\Python38\py311.exe 
  • 设置 pip 国内镜像源

    py38 -m pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
    py311 -m pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
  • 升级 pip

    py38 -m pip install pip --upgrade
    py311 -m pip install pip --upgrade
  • 安装或升级 pipx

    py38 -m pip install pipx --upgrade
    py311 -m pip install pipx --upgrade
  • 在 Python 3.11 下用 pipx 安装 Poetry

    py311 -m pipx install poetry --force -i https://mirrors.aliyun.com/pypi/simple/
  • 查看安装情况

    > where poetry
    c:\Users\qbit\.local\bin\poetry.exe
    > poetry --version
    Poetry (version 1.4.1)
  • 修改 potry 缓存目录

    poetry config cache-dir D:\pypoetry
  • 设置将虚拟环境目录放在项目内

    poetry config virtualenvs.in-project true

测试多版本共享

测试 Python 3.11

  • 创建空目录 F:\tmp\test311,在里面创建文件 pyproject.toml,文件内容如下:

    [tool.poetry]
    name = "test"
    version = "0.1.0"
    description = ""
    authors = ["qbit"]
    readme = "README.md"
    
    [[tool.poetry.source]]
    name = "aliyun"
    url = "https://mirrors.aliyun.com/pypi/simple/"
    default = true
    
    [tool.poetry.dependencies]
    python = "^3.11"
    requests = "~2.28.2"
    
    [build-system]
    requires = ["poetry-core"]
    build-backend = "poetry.core.masonry.api"
  • 创建虚拟环境并安装第三方库

    poetry update -vv
  • 查看虚拟环境信息

    > poetry env info
    
    Virtualenv
    Python:         3.11.2
    Implementation: CPython
    Path:           F:\tmp\test311\.venv
    Executable:     F:\tmp\test311\.venv\Scripts\python.exe
    Valid:          True
    
    System
    Platform:   win32
    OS:         nt
    Python:     3.11.2
    Path:       C:\Python311
    Executable: C:\Python311\python.exe

    测试 Python 3.8

  • 创建空目录 F:\tmp\test38,在里面创建文件 pyproject.toml,文件内容如下:

    [tool.poetry]
    name = "test"
    version = "0.1.0"
    description = ""
    authors = ["qbit"]
    readme = "README.md"
    
    [[tool.poetry.source]]
    name = "aliyun"
    url = "https://mirrors.aliyun.com/pypi/simple/"
    default = true
    
    [tool.poetry.dependencies]
    python = "^3.8"
    requests = "~2.28.2"
    
    [build-system]
    requires = ["poetry-core"]
    build-backend = "poetry.core.masonry.api"
  • 切换 python 版本并创建虚拟环境

    poetry env use C:\Python38\python.exe
  • 查看虚拟环境信息

    > poetry env info
    
    Virtualenv
    Python:         3.8.10
    Implementation: CPython
    Path:           F:\tmp\test38\.venv
    Executable:     F:\tmp\test38\.venv\Scripts\python.exe
    Valid:          True
    
    System
    Platform:   win32
    OS:         nt
    Python:     3.8.10
    Path:       C:\Python38
    Executable: C:\Python38\python.exe
  • 安装第三方库

    poetry update -vv

后记

  • 如果报类似如下错误,部分包安装不成功,可以 poetry shell 进入虚拟环境后用 pip 安装报错的包

    _WheelFileValidationError
    version.py is not mentioned in RECORD
    In {self._zipfile.filename}, hash / size of {item.filename} didn't match RECORD
  • 出现上面这个错误的原因是第三方包不够规范,使得 poetry 在校验的时候出错。可以参考 installer: do not fail on invalid wheels, print only a warning
本文出自 qbit snap

qbit snap
开箱即用,拿走不谢。
262 声望
276 粉丝
0 条评论
推荐阅读
Postman 发送 RSA 签名请求(qbit)
前言Postman 版本 10.13.6qbit 将 RSAForPostman 压缩拷贝到了码云便于国内访问Postman 脚本示例Pre-request Script {代码...} Postman 内置库官方文档:[链接] {代码...} 本文出自 qbit snap

qbit阅读 143

使用Docker搭建 代码质量平台 SonarQube
概述由于sonarqube7.8版本之后不再支持JDK1.8,但大部分项目仍采用JDK1.8,所以本文还是以sonarqube7.8为例。一、拉取两个Docker镜像 {代码...} 二、运行数据库容器 {代码...} 三、运行sonarqube {代码...} 检查...

FrontNg阅读 4.7k评论 1

项目总延期?需求乱插队?程序员如何做好项目管理
程序员对工作量评估不准确?日常临时问题打乱排期?怎么让大家对需求的理解一致?如何既保证开发效率又保证质量?项目管理是「把事情做对」的重要能力之一。知识型工作者包括程序员,在工作中都不知不觉中扮演着...

腾讯云开发者2阅读 561

Nexus-Maven私服搭建
前言🏃🏃🏃 {代码...} Nexus下载下载地址 : Nexus选择对应版本下载完成wget方式以上浏览器访问官网下载方式,可以在Linux服务器直接使用wget方式替代wget https://sonatype-download.global.ssl.fastly.net/nexus/3/...

t_什么都没有阅读 2.1k

Maven 快速设置指南
1. 下载 Maven点击打开 Maven 下载页面,选择 “Binary zip archive” 后面的第一个链接即可下载。如果出于某种原因下载十分缓慢,可以换从 阿里云的镜像站点 下载。下载完成后解压到任意目录。如果打算长期使用,...

捏造的信仰阅读 2.1k

conda 包管理工具及换源
运行 conda clean -i 清除索引缓存,保证用的是镜像站提供的索引。运行conda config --show-sources 查看有没有换成功

aloneme阅读 1.5k

项目管理PMP过关总结
经过近两个月的漫长等待,昨日终于成功上岸。由于去年受疫情影响,本来原定于去年11底的PMP考试延期到了今年3月才进行考试。在获得结果后的第一时间,趁着还有些许记忆,准备分享下整个PMP一路下来的心路历程。

维李设论阅读 891

封面图
262 声望
276 粉丝
宣传栏