记录自己(小白)第一次使用pyenv和poetry管理python环境的一些过程,给大家参考!
文章目录
概要
推荐使用pyenv管理python版本和poetry管理第三方依赖包,及项目环境在另一个项目的复现
整体架构流程
1、先安装pyenv-win(window版本)和poetry
(1)安装pyenv-win
这是官方的安装代码,直接在powershell中运行即可,但是运行了很多次依然提示我错误根本识别不了nvoke-WebRequest...。所以我采用第二种方法
nvoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"
(2)打开原网址 https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1
然后右击 另存为 install-pyenv-win.ps1(C:\Users\XXX),采用自己先下载然后安装的流程,保证不会出错。下载好了之后然后在powershell中运行安装 &"./install-pyenv-win.ps1"
& : 无法加载文件 C:\Users\XXX\install-pyenv-win.ps1。未对文件 C:\Users\XXX\install-pyenv-win.ps1 进行数字签名。
仍然出现错误,发现PowerShell 默认执行策略为 Restricted
(禁止运行未签名脚本),需更改为允许运行本地脚本的策略:
临时允许单次运行
- 在 PowerShell 中运行以下命令(无需管理员权限):
powershell
powershell -ExecutionPolicy Bypass -File "你下载的位置"
然后再运行,即可安装。
&"./install-pyenv-win.ps1"
- 验证是否已经安装成功,提示 pyenv 3.1.1,已成功
pyenv --version
安装python,我这里装的是3.11.5版本
pyenv install 3.11.5
(2)安装poetry
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -
- 安装好之后一定要把路径配置到环境变量
- 验证是否安装成功,显示版本号即成功。
> poetry --version
Poetry (version 2.1.1)
2、poetry管理环境
找到你的项目跟目录,比如 E:\05_Phd_fighting\08_software_learning\08_project,在powershell输入cd XX(你的根目录),在你的根目录下新建环境。输入
poetry init
- 按提示输入项目信息(名称、版本、描述等),直接回车可留空或使用默认值。
- 完成后会生成
pyproject.toml
文件(项目依赖配置文件) - 虚拟环境默认路径:
C:\Users\<用户名>\AppData\Local\pypoetry\Cache\virtualenvs
(Windows) - 注意python的版本选择 尽量选择范围大一点的 防止python版本太低/高 影响兼容性
若需在项目根目录下生成 .venv
文件夹,可先配置:
poetry config virtualenvs.in-project true
安装生产依赖(如 requests
),环境的名称会默认 .venv名称,是系统默认
poetry add requests
激活环境
poetry shell
退出虚拟环境
exit
poetry env list可以查看已经建立的环境,如.venv(activated)
3、在已经的环境下,重新建立个环境且配置相同
复制 pyproject.toml 和 poetry.lock文件到你的新项目文档就可以,然后输入poetry install 会自动安装两个文件里的依赖包。pyproject.toml只会记录你安装的包 不会记录 安装这些包的其他依赖包,这个好评!
4、常见指令分享
- poetry语句指令
##########poetry管理环境语句########
# 创建一个新的项目
poetry new <project_name>
# 环境列表
poetry env list
# 安装包
poetry add XXX
# 删除依赖包
poetry remove XXXX
# 安装项目的所有依赖
poetry install
# 更新项目依赖到最新版本
poetry update
# 激活虚拟环境
poetry shell
# 运行项目脚本
poetry run python my_project(我的项目名)/script.py
#查看设置选项
poetry config --list
# 查看虚拟环境地址(判断是否在项目目录下)
poetry env info --path
# 设定虚拟环境设在项目文件下
poetry config virtualenvs.in-project true
# 看当前已经安装的包和结构
poetry show --tree
# 删除指定环境
poetry env remove my-project-14HbYSZ2-py3.12(环境名称)
#指定具体的python版本
poetry env use "E:\anaconda3\envs\pytorch311\python.exe"
# 更新依赖树并尝试解决冲突
poetry update
# 手动指定版本(例:将 pandas 锁定为 2.1.0)
poetry add pandas==2.1.0
######## 清理并重建虚拟环境
# 删除当前虚拟环境
Remove-Item -Recurse -Force .venv
# 确保 Poetry 在项目内生成虚拟环境
poetry config virtualenvs.in-project true
# 显式指定 Python 解释器(替换为实际路径)
poetry env use "E:\...\python.exe"
# 重新安装依赖并生成环境
poetry install --no-root
# 检查 Poetry 当前使用的 Python 解释器
poetry env info --path
# 检查 .venv 目录结构
Get-ChildItem .venv
# 激活虚拟环境
poetry shell
# 检查 Python 解释器路径
python -c "import sys; print(sys.executable)"
- pyenv 语句分享
##更新pyenv
##如果通过安装程序安装
##在 Powershell 终端中运行以下命令:&"${env:PYENV_HOME}\install-pyenv-win.ps1"
##命令
commands List all available pyenv commands
local 设置或显示本地特定于应用程序的Python版本
latest 打印带有给定前缀的最新安装或已知版本
global 设置或显示全局Python版本
shell 设置或显示特定于shell的Python版本
install 安装1个或更多版本的Python
uninstall 卸载1个或更多版本的Python
update 更新缓存的版本DB
rehash 重新散列pyenv shims(在切换Python版本后运行此命令)
vname 显示当前Python版本
version 显示当前Python版本及其起源
version-name 显示当前Python版本
versions 列出pyenv可用的所有Python版本
exec 通过首先准备PATH来运行可执行文件,以便选择
通过首先准备PATH来运行可执行文件,以便选择
which 显示可执行文件的完整路径
whence 列出包含给定可执行文件的所有Python版本
# 查看当前 pyenv已经安装的python版本: pyenv versions
# 指定当前根目录的python版本为: pyenv local 3.11.5(版本号)
小结
欢迎大家把自己遇到问题分享!!!!