pyenv 让您可以轻松地在多个 Python 版本之间切换。它简单、不显眼,并且遵循 UNIX 的传统,即做好一件事的单一用途工具。
项目描述
适用于 Windows 的 pyenv
pyenv是一个很棒的工具。我们已将其移植到 Windows。我们需要您的想法来改进这个库,您的反馈有助于项目的发展。
对于现有的 python 用户,我们支持通过 pip 安装。
贡献者和感兴趣的人可以在@Slack上加入我们。您的帮助让我们充满动力!
介绍
pyenv for python 是一个很棒的工具,但就像ruby 开发人员的rbenv一样,它不直接支持 Windows。经过一些 Python 开发人员的研究和反馈后,我发现他们希望 Windows 系统具有类似的功能。
这个项目是从rbenv-win派生的,并针对pyenv进行了修改。由于许多不同贡献者的帮助,它现在已经相当成熟。
pyenv
pyenv是一个简单的 python 版本管理工具。它使您可以轻松地在多个 Python 版本之间切换。它简单、不显眼,并且遵循 UNIX 的传统,即做好一件事的单一用途工具。
pyenv-win 命令
commands List all available pyenv commands
local Set or show the local application-specific Python version
global Set or show the global Python version
shell Set or show the shell-specific Python version
install Install 1 or more versions of Python
uninstall Uninstall 1 or more versions of Python
update Update the cached version DB
rehash Rehash pyenv shims (run this after switching Python versions)
vname Show the current Python version
version Show the current Python version and its origin
version-name Show the current Python version
versions List all Python versions available to pyenv
exec Runs an executable by first preparing PATH so that the selected Python
which Display the full path to an executable
whence List all Python versions that contain the given executable
安装
目前我们支持以下方式,选择您的任何舒适:
- Power Shell - 最简单的方法
- Git 命令- 默认方式 + 添加手动设置
- pyenv-win zip - 手动安装
- Python pip - 适用于现有用户
- 巧克力味
- 32列车的使用方法
欢呼!完成后是验证的步骤
注意:如果您运行的是 Windows 10 1905 或更高版本,您可能需要通过“开始”>“管理应用程序执行别名”禁用内置 Python 启动器并关闭 Python 的“应用程序安装程序”别名
电源外壳
安装 pyenv-win 最简单的方法是在 PowerShell 终端中运行以下安装命令:
Invoke-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"
如果您收到如下所示的任何UnauthorizedAccess错误,请使用“以管理员身份运行”选项启动 Windows PowerShell 并运行Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine,现在重新运行上述安装命令。
& : File C:\Users\kirankotari\install-pyenv-win.ps1 cannot be loaded because running scripts is disabled on this system. For
more information, see about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:173
+ ... n.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : SecurityError: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
有关“数字签名”或“安全警告”的更多信息,您可以参考以下问题#332
安装完成!
Git 命令
pyenv-win的默认安装方式,它需要git命令你需要为windows安装git/git-bash
如果您使用的是 PowerShell 或 Git Bash ,请$HOME使用%USERPROFILE%
使用命令提示符进行 git 克隆git clone https://github.com/pyenv-win/pyenv-win.git "%USERPROFILE%\.pyenv"
添加系统设置的步骤
注意:不要忘记上面的检查链接,它包含完成的最后步骤。
安装完成!
Pyenv-win 压缩包
pyenv-win 的手动安装步骤
如果您使用的是 PowerShell 或 Git Bash ,请$HOME使用%USERPROFILE%
-
如果不存在,则
.pyenv使用命令提示符创建目录mkdir %USERPROFILE%/.pyenv -
提取文件并将其移动到
%USERPROFILE%\.pyenv\ -
确保下面有一个
bin文件夹%USERPROFILE%\.pyenv\pyenv-win
添加系统设置的步骤
注意:不要忘记上面的检查链接,它包含完成的最后步骤。
安装完成!
蟒蛇点
对于现有的 python 用户
如果您使用的是 PowerShell 或 Git Bash ,请$HOME使用%USERPROFILE%
通过命令提示符安装命令
pip install pyenv-win --target %USERPROFILE%\\.pyenv
如果您对上述命令有错误,请使用以下方法解决它。参考。链接#303
pip install pyenv-win --target %USERPROFILE%\\.pyenv --no-user --upgrade
添加系统设置的步骤
注意:不要忘记上面的检查链接,它包含完成的最后步骤。
安装完成!
巧克力味
这个需要choco命令安装,安装链接
巧克力味的命令choco install pyenv-win
Chocolatey 页面:pyenv-win
安装完成!
验证安装
添加系统设置
在这里使用 PowerShell 是一种简单的方法
- 将 PYENV、PYENV_HOME 和 PYENV_ROOT 添加到环境变量中
[System.Environment]::SetEnvironmentVariable('PYENV',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
[System.Environment]::SetEnvironmentVariable('PYENV_ROOT',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
[System.Environment]::SetEnvironmentVariable('PYENV_HOME',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
- 现在将以下路径添加到您的 USER PATH 变量以访问 pyenv 命令
[System.Environment]::SetEnvironmentVariable('path', $env:USERPROFILE + "\.pyenv\pyenv-win\bin;" + $env:USERPROFILE + "\.pyenv\pyenv-win\shims;" + [System.Environment]::GetEnvironmentVariable('path', "User"),"User")
安装完成。欢呼!
32列车的使用方法
使用 Git
- 对于 32-train 的先决条件是使用 Git 安装 pyenv-win
- 转到 .pyenv 目录命令
cd %USERPROFILE%\.pyenv - 跑
git checkout -b 32bit-train origin/32bit-train - 运行
pyenv --version,你应该看到2.32.x
使用点子
-
跑
pip install pyenv-win==2.32.x --target %USERPROFILE%\.pyenv -
添加系统设置的步骤
使用邮编
-
添加系统设置的步骤
证实
- 重新打开命令提示符并运行
pyenv --version - 现在输入
pyenv以查看它的用法
如果您收到“未找到命令”错误,请检查以下注释并手动检查设置
对于 Visual Studio Code 或其他带有内置终端的 IDE,重新启动它并再次检查
手动检查设置
确保通过 GUI 正确设置所有环境变量:
This PC
→ Properties
→ Advanced system settings
→ Advanced → Environment Variables...
→ PATH
注意:如果您运行的是 Windows 10 1905 或更高版本,您可能需要通过“开始”>“管理应用程序执行别名”禁用内置 Python 启动器并关闭 Python 的“应用程序安装程序”别名
用法
- 查看 pyenv windows 支持的 python 版本列表:
pyenv install -l - 要过滤列表:
pyenv install -l | findstr 3.8 - 要安装 python 版本:
pyenv install 3.5.2- 注意:对于某些非静默安装,可能会弹出安装向导。您需要在安装过程中单击向导。无需更改其中的任何选项。或者您可以使用 -q 进行安静安装
- 您也可以在一个命令中安装多个版本:
pyenv install 2.4.3 3.6.8
- 要将 python 版本设置为全局版本:
pyenv global 3.5.2- 如果未设置本地版本(见下文),这是默认使用的 python 版本。
- 注意:必须先安装该版本。
- 将 python 版本设置为本地版本:
pyenv local 3.5.2.python每当从此文件夹中调用时,都会使用给定的版本。这与需要显式激活的虚拟环境不同。- 注意:必须先安装该版本。
- 在(卸载)使用 pip 安装任何库或修改版本文件夹中的文件之后,您必须运行
pyenv rehash以使用新的 shim 更新 pyenv,以用于 python 和库的可执行文件。- 注意:这必须在
.pyenv文件夹之外运行。
- 注意:这必须在
- 要卸载 python 版本:
pyenv uninstall 3.5.2 - 要查看您正在使用的 python 及其路径:
pyenv version - 要查看此系统上安装的所有 python 版本:
pyenv versions - 使用以下命令更新可发现的 Python 版本列表:
pyenv updatepyenv-win2.64.x和2.32.x版本的命令
如何更新 pyenv
- 如果通过 pip 安装
- 将您的 pyenv-win 安装路径添加到
easy_install.pth位于站点包中的文件。这应该使 pip 将 pyenv-win 识别为已安装。 - 通过 pip 获取更新
pip install --upgrade pyenv-win
- 将您的 pyenv-win 安装路径添加到
- 如果通过 Git 安装
- 转到
%USERPROFILE%\.pyenv\pyenv-win(这是您的安装路径)并运行git pull
- 转到
- 如果通过 zip 安装
- 下载最新的压缩包并解压
- 转到
%USERPROFILE%\.pyenv\pyenv-win并替换文件夹libexec以及bin您刚刚下载的新文件夹
- 如果通过安装程序安装
- 在 Powershell 终端中运行以下命令:
&"${env:PYENV_HOME}\install-pyenv-win.ps1"
- 在 Powershell 终端中运行以下命令:
公告
==================为了与pyenv
linux/mac
保持同步,pyenv-win 现在默认安装 64 位版本。为了支持与旧版本的 pyenv-win 的兼容性,我们将 32 位火车(分支)作为单独的版本进行维护。
两个版本都可以安装 64bit 和 32bit python 版本;区别在于版本名称,例如:
- 64bit-train (master),即 pyenv 版本2.64.x
> pyenv install -l | findstr 3.8
....
3.8.0-win32
3.8.0
3.8.1rc1-win32
3.8.1rc1
3.8.1-win32
3.8.1
3.8.2-win32
3.8.2
3.9.0-win32
3.9.0
....
- 32bit-train,即 pyenv 版本2.32.x
>pyenv install -l | findstr 3.8
....
3.8.0
3.8.0-amd64
3.8.1rc1
3.8.1rc1-amd64
3.8.1
3.8.1-amd64
3.8.2
3.8.2-amd64
....
==================
已放弃对低于 2.4 的 Python 版本的支持,因为它们的安装程序不像从 2.4 开始的版本那样“干净”地安装,而且它们主要已不再使用/support 现在在大多数环境中。
===================
常问问题
-
问题: pyenv for windows 是否支持 python2?
- 答:是的,我们从 2.4+ 版本开始支持 python2,直到 python.org 正式删除它。
- 低于 2.4 的版本使用过时的 Wise 安装程序,并且在安装多个补丁版本时存在问题,这与 Windows MSI 和支持“提取”安装的新 Python3 安装程序不同。
-
问题: pyenv for windows 是否支持 python3?
- 答:是的,我们从 3.0 版本开始支持 python3。我们从 3.0 开始支持它,直到 python.org 正式删除它。
-
问题:我
batch file cannot be found.在安装python时遇到问题,我该怎么办?- 答:可以无视。它只是
pyenv rehash在某些设备上创建 bat 文件之前调用命令。
- 答:可以无视。它只是
-
问题:卸载python版本时系统卡住了
- 答:导航到您安装 pyenv 的位置,打开它的“版本”文件夹(通常是
%USERPROFILE%\.pyenv\pyenv-win\versions),然后删除您要删除的版本的文件夹。
- 答:导航到您安装 pyenv 的位置,打开它的“版本”文件夹(通常是
-
问题:我使用 pip 安装了 pyenv-win。我怎样才能卸载它?
- 答案:按照如何更新 pyenv中的 pip 说明,然后运行
pip uninstall pyenv-win
- 答案:按照如何更新 pyenv中的 pip 说明,然后运行
-
问题: pyenv-win 无法识别,但我设置了 ENV PATH?
- 答:根据Windows,在用户变量下添加路径时,您需要注销并重新登录,以反映任何更改。对于系统变量,它不是必需的。
更改日志
3.1.1 中的新功能
- 修复#413:错误:pyenv 安装失败,因为系统找不到指定的文件 'dark.exe'
- 在分类器中添加:python 3.8、3.9 和 3.10
3.1 中的新功能
- 修复#142:首选本地安装程序而不是基于 Web 的安装程序
- 修复#401、#396、#383和#360 :为基于本地的安装程序添加了与#410中基于 Web 的安装程序相同级别的支持
- 注意:在运行这些版本的命令之前,最好通过 Windows 的
Add or remove Programs系统设置页面卸载受影响的版本(3.9.11 及更高版本)。pyenv uninstall
- 注意:在运行这些版本的命令之前,最好通过 Windows 的
3.0 中的新功能
- 修复#311:支持许多全局和 shell 版本。
- 修复#318:不再影响 PYENV_VERSION,它只会
pyenv global影响。pyenv localpyenv shell - 测试套件模拟 32 位架构环境。
- 测试套件现在
powershell还pwsh使用cmd. pyenv shell现在就像在 32 位平台上一样,如果没有明确添加,它会添加pyenv global到每个提供的版本中。pyenv local-win32
2.64.11 中的新功能
- 修复#287:通过从路径中删除 shims 目录来防止无限递归。
- 修复#259:正确处理
pyenv路径中的空格。 - 修复#305:修复
exec更喜欢列出的最后一个版本.python-version而不是第一个版本。- 注意:
pyenv rehash升级后必须调用。如果您不这样做,预计会出现以下错误消息:'Scripts' is not recognized as an internal or external command, operable program or batch file.
- 注意:
2.64.10 中的新功能
- 签
PATH入pyenv version以报告其他 Python 版本。
2.64.9 中的新功能
- 功能#210:支持扩展安装程序选项
- 修复#269:从 travis-ci 迁移到 GitHub Actions
- 修复文件
exec的垫片bat。 - 修复#193:PowerShell 支持
pyenv shell
2.64.8 中的新功能
2.64.7.4 中的新功能
- 修复#256:修复
pyenv --version带有空格的用户名。
2.64.7.3 中的新功能
- 修复#254:修复 exec 与许多本地版本。
2.64.7.2 中的新功能
- 修复#250:在
pyenv exec.
2.64.7.1 中的新功能
- 修复#246:如果没有指定参数
pyenv which,则显示帮助。pyenv whence - 修复#140合并后的执行问题。
- 修复#247:如果用户名包含空格,则 bash 脚本中不再有错误的文件名。
- 修复#243:对
pyenv exec.
2.64.6.1 中的新功能
- 使用 GitHub Actions 发布到 PyPi。
2.64.5 中的新功能
2.64.4 中的新功能
- 支持更多 python 版本。
- 修复#217:添加丢失的调用到
exec.bat. - 增强#225:添加毒物支持。
- 修复#204:支持许多本地版本。
- 增强功能#220:使用更多 shim 重新散列所有已安装的版本。
- 增强功能#221:添加
pyenv global --unset.
2.64.3 中的新功能
- 在指定要(卸载)安装的版本时,版本命名约定现在已更改为使用 64 位后缀。现在您只需要使用版本号来安装您平台的特定位版本。
- *警告*:此更改与 v1.2.5 或更低版本向后不兼容;如果从该版本升级,请安装向后兼容的32bit-train ,或者在升级 pyenv 之前卸载所有版本的 python。
- 前任。
pyenv install 2.7.17将在 x64 上安装为 64 位,在 x86 上安装为 32 位。(64位仍然可以使用2.7.17-win32安装32位版本) pyenv global/local/shell现在也可以识别您的平台并选择适当的位版本。(64 位用户[version]-win32现在需要指定使用 32 位版本)
- 添加了对真正不显眼的本地安装的支持。
- *警告*:此更改与 v1.2.5 或更低版本向后不兼容;如果从该版本升级,请安装向后兼容的32bit-train ,或者在升级 pyenv 之前卸载所有版本的 python。
- 不再将安装/卸载记录写入注册表或开始菜单(没有“程序和功能”记录)。
- 安装 python 的补丁版本(例如 3.6.1)时,安装另一个补丁版本(例如 3.6.2)不会重复使用相同的文件夹并覆盖以前安装的次要版本。他们现在被分开了。
- 卸载现在是一个简单的文件夹删除。(现在可以由用户安全地手动完成或
pyenv uninstall)
- 添加了对在单个命令中(卸载)安装多个 python 版本或通过
-a/--all开关安装所有 DB 版本的支持。- 在 x64 计算机上使用时
--all,您可以使用--32only或--64only安装仅 32 位或仅 64 位版本的 python。(在 32 位计算机上什么都不做,以后可能会开发更好的过滤器)
- 在 x64 计算机上使用时
pyenv global/rehash在(卸载)安装新的 Python 版本后自动调用。(指定的最后一个版本,如果安装多个)- Pyenv 现在使用直接从 Python 镜像站点抓取的版本缓存数据库,用户可以使用
pyenv update. 用户不再需要等待 pyenv 的源 repo 更新后才能使用新版本的 Python,也可以使用新的 alpha/beta python 版本。 pyenv install现在有一个-c/--clear清空%PYENV%\install_cache文件夹中的缓存安装程序。pyenv rehash现在在创建 shims 而不仅仅是 exe、bat、cmd 和 py 文件时承认 %PATHEXT%(加上 PY 和 PYW),因此可以从\Scriptspip 获得更多的可执行文件和安装的库。- 使用
pyenv rehash不再调用创建的垫片pyenv exec,而是直接调用 python 以防止其他程序执行垫片时出现问题。 - Shims 现在使用 cp1250 作为默认代码页,因为 Python2永远不会真正支持 cp65001。cp1250 对高位 ANSI 字符(例如“Pokémon”)有更好的支持,但仍不完全兼容 UTF-8。
- 注意:对低于 2.4 的 Python 版本的支持已被放弃,因为它们的安装程序不像 2.4 以后的版本那样“干净”地安装,而且它们现在在大多数环境中主要是不使用/不支持的。
如何贡献
- 分叉项目并在本地克隆。
- 在分支之前创建上游远程并同步本地副本。
- 为每个单独的工作分支。编写测试用例是一个好习惯。
- 完成工作,编写好的提交消息,并阅读 CONTRIBUTING 文件(如果有的话)。
tests\bat_files\test_install.bat通过运行和测试更改tests\bat_files\test_uninstall.bat- 推送到您的原始存储库。
- 在 GitHub 中创建一个新的拉取请求。
错误跟踪器和支持
- 请通过GitHub 错误跟踪器报告任何关于 pyenv-win 的建议、错误报告或烦恼。
许可和版权
-
pyenv-win 在MIT 2019下获得许可
作者和感谢
pyenv-win 由Kiran Kumar Kotari和贡献者
开发
感谢所有贡献者和支持者对最新主要版本的耐心。