如何在Windows 10中升级Python安装?

226

我在一台机器上安装了Python 2.7.11。我想将Python升级至3.5或更高版本。

我应该如何操作? 是否需要先卸载2.7.11再安装新版本? 有没有直接更新的方法?更新是否可行?


也许这篇旧帖子可以帮到你?https://dev59.com/_GUp5IYBdhLWcg3wtZLt 问候。 - MikeL
1
Python2和Python3应被视为不同的语言,就像C#与C++不同一样。 - WhatsThePoint
10个回答

170
每个Python的小版本,也就是任何3.x和2.x版本,都可以与其他版本一起在计算机上安装。只有补丁版本才会升级现有的安装。
因此,如果您想保留已安装的Python 2.7,则只需让它保持不变,并使用安装程序安装新版本。如果您想摆脱Python 2.7,则可以在安装较新版本之前或之后卸载它 - 对此没有区别。
当前的Python 3安装包带有py.exe启动器,默认情况下安装在系统目录中。这使其从PATH可用,因此您可以仅使用py而不是python作为命令,从任何shell自动运行它。这样,您可以轻松地拥有多个Python安装,而它们之间不会相互干扰。运行时,只需使用py script.py而不是python script.py来使用启动器。您还可以使用例如py -3py -3.6指定版本以启动特定版本,否则启动器将使用当前默认版本(通常是最新的3.x)。
使用启动器,您还可以运行Python 2脚本(这些脚本通常与Python 3语法不兼容),如果您决定保留Python 2.7安装,则只需使用py -2 script.py来启动脚本。

关于 PyPI 包,每个 Python 安装都有自己的文件夹来安装模块。因此,如果您安装了一个新版本并且想要使用以前版本安装的模块,您需要先为新版本安装它们。当前版本的安装程序也提供了安装 pip 的选项;它已默认启用,因此您已经在每个安装中拥有 pip。除非您明确将 Python 安装添加到 PATH 中,否则您不能仅使用 pip。不过,您也可以简单地使用 py.exe 启动器来处理这个问题:py -m pip 运行 pip。例如,要为 Python 3.6 安装 Beautiful Soup,您可以运行 py -3.6 -m pip install beautifulsoup4


1
你会如何建议我在当前用于脚本开发的工作站上实现这一点呢?顺便提一下,我的版本是 3.5.2(Windows 7 64 位)。 - Moshe S.
1
只需并排安装新版本即可,无需删除旧版本。保留旧版本甚至可能帮助您将现有的Python 2脚本迁移到Python 3,这样您仍然可以运行原始脚本。 - poke
1
安装程序会给您设置路径的选项,因此您可能不需要手动设置。是的,您的IDE需要更新。 - poke
1
也可以使用 py -3.7-64py -3.7-32 - noobninja
3
注意:py 是 Windows 上的 Python Launcher。或参见定义它的 PEP 397。它不会被安装在 Linux/Mac 上。 - LightCC
显示剩余3条评论

137
如果你要将任何3.x.y版本升级到3.x.z(补丁)的Python版本,只需前往Python下载页面获取最新版本并开始安装。由于你已经在计算机上安装了Python,安装程序会提示你进行“立即升级”。点击该按钮,它将用新版本替换现有版本。安装后还需要重新启动计算机。

enter image description here

如果您正在从3.x升级到3.y(小版本),那么您将收到“立即安装”的提示。在这种情况下,您不是在升级,而是在安装Python的新版本。您可以在计算机上安装多个版本,它们将位于不同的目录中。当您在计算机上有多个Python版本时,您需要使用py lanucher启动特定版本的Python。
例如: py -3.7
或者 py -3.8
确保您的计算机上已安装py launcher。如果您使用Windows安装程序的默认设置,则会自动安装它。如果您单击安装窗口上的“自定义安装”链接,您总是可以检查它。
如果您的计算机上安装了多个Python版本,并且您有一个使用先前版本Python的虚拟环境(如venv)的项目,您可以仅在该venv中升级Python,方法如下: python -m venv --upgrade “您的虚拟环境路径”
例如,我在我的./venv虚拟环境中有Python 3.7,我想将venv升级到Python 3.8,我会执行以下操作: python -m venv --upgrade ./venv

2
@MosheS.您可以使用以下命令获取过时软件包列表:pip list --outdated然后通过以下方式更新每个软件包:python -m pip install --upgrade <your package> - Vlad Bezden
11
在Windows 10上从3.7.2升级到3.7.4(64位),我没有看到"Upgrade Now",而是看到了"Install Now"。 - dumbledad
3
我刚从3.7.3版本升级到了3.7.5版本,然后看到了“立即升级”的提示。如果我试图从3.7.3版本直接升级到3.8版本,那么会显示“立即安装”的提示。 - Tiago Martins Peres
1
无法工作。我有Python 3.7.4,当我运行3.8.1安装程序时,我没有选择“立即升级”,只有“安装”。 - Suncatcher
3
@Suncatcher,你说得对,那就是我所描述的“如果你想从3.x升级到3.y”,请阅读上文。 - Vlad Bezden
显示剩余3条评论

66

使用Chocolatey Windows包管理器安装/升级Python

假设你已经安装了Python 2.7.16:

C:\Windows\system32>python --version
python2 2.7.16

如果你想升级到当前的 3.x.y 版本,有一种简单的方法可以使用 Windows 包管理工具安装 Python 3.x.y 的 并行 安装。

现在,由于现代的 Windows 已经有了包管理工具,就像 Debian Linux 发行版有 apt-get,RedHat 有 dnf 一样:我们可以利用它来帮助我们!这叫做Chocolatey

什么是 Chocolatey?

Chocolatey 是一个基于 .NET 4.0 和 Visual Studio 内置的 nuget 包管理器的可脚本化的命令行工具。

如果你想了解 Chocolatey 及其使用原因,某些读者可能会发现这很有用,请访问https://chocolatey.org/docs/why

安装 Chocolatey

要获取 Chocolatey 包管理器,需要遵循https://chocolatey.org/docs/installation#installing-chocolatey 中所描述的过程,

我将在此为您总结。基本上有两个选项:使用 cmd 提示符或使用 PowerShell 提示符。

CMD 提示符安装 Chocolatey

启动一个管理员命令提示符。 在 Windows 10 上,要执行此操作:

  • Windows + R
  • 输入cmd
  • Ctrl+⇧ Shift+↵ Return

如果您没有系统上的管理员权限,请转到Chocolatey 网站。 您可能不完全没有希望进行有限的本地安装,但我将在此不予介绍。

  • 将以下字符串复制到命令提示符中并按Enter键:
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

下面将为您下载并安装Chocolatey:

Getting latest version of the Chocolatey package for download.
Getting Chocolatey from https://chocolatey.org/api/v2/package/chocolatey/0.10.11.
Downloading 7-Zip commandline tool prior to extraction.
Extracting C:\Users\blahblahblah\AppData\Local\Temp\chocolatey\chocInstall\chocolatey.zip to C:\Users\blahblahblah\AppData\Local\Temp\chocolatey\chocInstall...
Installing chocolatey on this machine
Creating ChocolateyInstall as an environment variable (targeting 'Machine')
  Setting ChocolateyInstall to 'C:\ProgramData\chocolatey'
WARNING: It's very likely you will need to close and reopen your shell
  before you can use choco.
Restricting write permissions to Administrators
We are setting up the Chocolatey package repository.
The packages themselves go to 'C:\ProgramData\chocolatey\lib'
  (i.e. C:\ProgramData\chocolatey\lib\yourPackageName).
A shim file for the command line goes to 'C:\ProgramData\chocolatey\bin'
  and points to an executable in 'C:\ProgramData\chocolatey\lib\yourPackageName'.

Creating Chocolatey folders if they do not already exist.

WARNING: You can safely ignore errors related to missing log files when
  upgrading from a version of Chocolatey less than 0.9.9.
  'Batch file could not be found' is also safe to ignore.
  'The system cannot find the file specified' - also safe.
chocolatey.nupkg file not installed in lib.
 Attempting to locate it from bootstrapper.
PATH environment variable does not have C:\ProgramData\chocolatey\bin in it. Adding...
WARNING: Not setting tab completion: Profile file does not exist at 'C:\Users\blahblahblah\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1'.
Chocolatey (choco.exe) is now ready.
You can call choco from anywhere, command line or powershell by typing choco.
Run choco /? for a list of functions.
You may need to shut down and restart powershell and/or consoles
 first prior to using choco.
Ensuring chocolatey commands are on the path
Ensuring chocolatey.nupkg is in the lib folder

要么 退出 CMD 命令提示符,要么输入以下命令重新加载环境变量:

refreshenv

PowerShell Chocolatey 安装

如果您更喜欢使用 PowerShell 而不是 cmd 提示符,您可以直接使用 PowerShell 进行安装,但是您需要告诉 PowerShell 使用适当的脚本执行策略才能使其正常工作。在 Windows 10 上,我发现最简单的方法是在 Windows 按钮旁边的 Cortana 搜索栏中输入以下内容:

PowerShell.exe

接下来,在弹出的菜单中右键点击“最佳匹配”选项,选择“以管理员身份运行”

现在您已经进入PowerShell了,希望正在以管理员权限运行,请执行以下操作安装Chocolatey:

Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

PowerShell会为您下载Chocolatey并启动安装过程。只需要几个步骤。它看起来 完全 像CMD安装,除了一些花哨的彩色文本。

要么退出PowerShell,要么输入以下命令重新加载环境变量:

refreshenv

升级Python

choco命令在PowerShell或cmd提示符下使用方法相同。按照上面的说明启动您最喜欢的。我会使用管理员cmd提示符:

C:\WINDOWS\system32>choco upgrade python -y

简而言之,由于你使用的是2.7.x版本,而chocolatey会告诉你“嘿,Python没有安装”,因为它将2.7版本视为完全不同的版本。 它只会给你最新版本3.x.y(截至本文写作时,为3.7.2,但几个月后可能会有所改变):

Chocolatey v0.10.11
Upgrading the following packages:
python
By upgrading you accept licenses for the packages.
python is not installed. Installing...

python3 v3.x.y [Approved]
python3 package files upgrade completed. Performing other installation steps.
Installing 64-bit python3...
python3 has been installed.
Installed to: 'C:\Python37' 
  python3 can be automatically uninstalled.
Environment Vars (like PATH) have changed. Close/reopen your shell to
 see the changes (or in powershell/cmd.exe just type `refreshenv`).
 The upgrade of python3 was successful.
  Software installed as 'exe', install location is likely default.

python v3.x.y [Approved]
python package files upgrade completed. Performing other installation steps.
 The upgrade of python was successful.
  Software install location not explicitly set, could be in package or
  default install location if installer.

Chocolatey upgraded 2/2 packages.
 See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).
退出 cmd/Powershell 提示符并重新进入,或者使用 refreshenv 命令,然后输入 py --version。
C:\Windows\System32>refreshenv
Refreshing environment variables from registry for cmd.exe. Please wait...Finished..

C:\Windows\system32>py --version
Python 3.7.2

请注意,最近安装的Python将会在您在命令行中键入Python时接管。您可以通过使用以下命令运行任一版本:

py -2
Python 2.7.16 (v2.7.16:413a49145e, Mar  4 2019, 01:37:19) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

C:\>py -3
Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>exit()
C:\>

我建议您使用Python的pip工具安装所需的任何软件包。例如,假设您想要安装Flask,则以下命令首先升级pip,然后安装Flask:

C:\>py -3 -m pip install --upgrade pip
Collecting pip
  Downloading https://files.pythonhosted.org/packages/d8/f3/413bab4ff08e1fc4828dfc59996d721917df8e8583ea85385d51125dceff/pip-19.0.3-py2.py3-none-any.whl (1.4MB)
    100% |████████████████████████████████| 1.4MB 1.6MB/s
Installing collected packages: pip
  Found existing installation: pip 18.1
    Uninstalling pip-18.1:
      Successfully uninstalled pip-18.1
Successfully installed pip-19.0.3

c:\>py -3 -m pip install Flask

...就可以搞定了。祝你使用Python愉快!


答案的简短版本是安装Chocolatey,然后从命令提示符中刷新环境变量,然后执行choco install python,它将安装最新版本的Python。在cmd中再次刷新环境变量,您应该可以从cmd中运行最新的Python。 - Sebastian
在CMD和POWERSHELL中出现以下错误:Exception calling "DownloadString" with "1" argument(s): "The underlying connection was closed: An unexpected error occurred on a send." At line:1 char:104
  • Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString <<<< ('https://chocolatey.org/install.ps1'))
    • CategoryInfo : NotSpecified: (:) [], MethodInvocationException
    • FullyQualifiedErrorId : DotNetMethodException
- trustory

6
一个快捷而简单的方法,是按照以下步骤进行:
  1. 在受影响的环境中执行 pip freeze > requirements.txt 命令备份你的Python库(或者使用其他备份方式)
  2. 删除旧版本的Python (在我的情况下是 3.8)
  3. 删除相应的环境
  4. 安装新版本(在我的情况下是 3.9.5)
  5. 重新创建环境,可以使用命令 python -m venv venv 或自行选择其他方法
  6. 重新安装你的插件或应用程序,可以使用命令 pip install -r requirements.txt 或自行选择其他方法

这只适用于一个版本。 - D.L
尽管这是最好的方法,但仍然相当笨重(需要5个步骤)进行安装和卸载...是否有更快捷的方式来实现相同的效果? - D.L
你可以不卸载旧版本,只安装新环境并重新安装你的需求,但是这样可能会导致不同版本的混淆。 - jAC

5

4

Python 2.x和Python 3.x是不同的。如果您想下载更新版本的Python 2,可以直接下载并安装新版本。

如果您想安装Python 3,可以单独安装Python 3,然后在控制面板>所有控制面板项目>系统>高级系统设置>环境变量中更改Python 2.x的路径为Python 3.x。


我更喜欢完全删除Python 2.7.11,因为我不打算支持它。所以我应该彻底删除它。对吗?“程序和功能”没有显示Python,所以我不知道如何删除它。我应该使用pip,怎么用呢?只是删除Python文件夹是个好主意吗?那些与之一起安装的旧软件包怎么办(如果有的话),我如何卸载它们? - Moshe S.
@MosheS。我认为它实际上不需要那么多空间,但如果您确实想要清理一下,那就尽管去做吧。它们应该都在同一个文件夹中,您可以从控制面板的“程序和功能”中卸载。我的Python 2.7和3.4都在那里。从那里卸载将删除所有软件包。如果您真的找不到它,可以尝试直接删除整个文件夹。当您下载Python 3并且它无法正常工作时,请按照我上面的答案编辑路径,这很可能是主要问题(如果有的话)。 - Julian Chan

4

在2019年,你可以使用chocolatey进行安装。打开命令提示符或PowerShell,输入:

choco install python

1

只需安装最新版的Python安装程序,它会自动检测您的Python版本并提示升级Python,然后开始升级。


这仅适用于微小版本号major.minor.micro,因此3.x.y3.x.z是如此,但如果您升级了一个次要版本,则会在现有版本旁边安装一个新版本...所以3.a.x3.b.x将保留两个版本3a3b... - D.L

-1
我能够使用以下命令执行PowerShell,并升级Python而没有任何问题。 python -m pip install --upgrade pip 请查看图片。

1
请适当格式化您的答案。 另外,我发现您忘记在答案中添加图像。如果可能,请添加图像和工作证明,这可能会更好地回答问题。 - Mehant Kammakomati
2
这只升级了pip而不是python。 - Heewoon

-1

你可以使用pyenv。它让你轻松切换所有版本的Python。


欢迎来到SO,请考虑在您的答案中提供更多细节。 - blondelg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接