python在windows的开发环境_使用WSL在Windows上搭建Python开发环境(1)

Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。

8c2d0ad0fce19d44496960f62e471f05.png

简介

2016年,微软推出了Windows Subsystem for Linux(WSL),这使得Windows具有了强大的Unix功能。2019年5月,微软宣布发布了具有更新架构的WSL2,该架构改进了WSL的许多方面——特别是文件系统的性能方面。我已经关注WSL一段时间了,但是现在WSL2即将发布,我决定安装并试用它。在我使用它的这几天里,我真的很喜欢这种体验。Windows 10和完整的Linux发行版(如Ubuntu)的组合使用是一个非常强大的开发方案,它的工作成效惊人。

下文将讨论:

·什么是WSL?为什么要在你的系统上安装并使用它?

·说明如何安装WSL2,介绍一些可以使开发更高效的辅助应用程序。

·如何在Windows和Linux的组合环境中让python和这个新功能有效地协同工作。

WSL是什么?

我在Windows上遇到的最大问题之一是通过命令行进行工作,这真的非常痛苦。旧的Windows命令提示符与一般的bash shell和全套的unix命令所提供的功能不匹配。WSL通过多种方式解决了这个问题。有了WSL,您可以在Windows系统上安装真正的Linux发行版,并以接近裸机的速度运行它。您可以两全其美——完整的unix支持与Linux不支持的工具(MS Office和其他Windows效能工具)可以同时使用。

一开始可能很难理解这个概念。下面有一个截图,可从更多视角进行看待:

8d7d4b6236095c6f5222c0b3dced8d42.png

在此屏幕截图中,我正在Windows上同时运行Excel、Word和完整版Ubuntu 18.04。它们可以在我的笔记本电脑上以可接受的速度同时运行。

现在已经有很多虚拟机软件,例如VMWare和VirtualBox。WSL2的主要优点是有效地利用了系统资源。Microsoft通过运行极少的Hyper-V功能子集,并在不运行时使用最少的资源来实现这个目的。使用这种架构,您可以在一秒钟左右的时间内启动虚拟Linux映像,并无缝式地开始Linux环境的使用。

这种安排的另一个好处是可以轻松地在虚拟环境和Windows系统之间复制文件。还有一些很厉害的技巧可以无缝地使用Visual Studio Code和Windows Explorer,这样可以缩短两个环境之间的距离。实际上,它工作得很好。

在本文后面的部分中,我将介绍一些其他示例,并重点介绍如何在各种环境中进行python开发。

设置WSL2

由于文件系统的速度提高,我极力推荐使用WSL2。在写这篇文章时,这些用法说明是我在Windows 10 Pro版本上安装WSL2的高级教程。我建议查看Windows官方文档来获取最新说明。我还发现本文和Ubuntu WSL官方页面对于设置内容都非常有用。

我在这里提前道歉,因为这篇文章有很多图片并且很长。但是我想制定一个相当完整的指南,将很多这些想法整合到一起。希望它们对你有帮助。

告诫完了之后,让我们开始吧。

在开始之前,请确保您具有系统管理员权限。为了获得WSL2,您还需要加入Windows Insider Program。这可能会在将来发生变化,但现在请确保已注册。我选择使用“slow”,如下图所示:

7f3d53d46a73ad6866d8fd4188e191df.png

此外,您需要至少是Build 18917的Windows 10版本。我使用的是Windows Pro,但我觉得Home版本也很好。

27f66e84ca794eff46249dc305102aee.png

如果这些是系统的新设置,请在继续操作之前确保所有更新都已应用。

现在已经建立了基础,您需要使用以下PowerShell命令来打开WSL和虚拟机平台:

fc0108d7aba2c32571223a4b8dcbfb39.png

在此处检查设置:

fce28892e0790c17e69be6a4c71546d4.png

您应该重启以确保安装完成。

现在已经安装好子系统,您需要从Microsoft Store安装首选的Linux发行版。我选择使用Ubuntu。该Ubuntu版本进行了一些调整,从而使它能更好地协同工作,因此我建议将Ubuntu作为第一个开始的版本。好处是,一旦你能让Ubuntu正常工作,那么就可以接着安装其他发行版,以确定最适合您的版本。

179652b2127fd3cbc06459e6e2591bec.png

安装应该不会花很长时间。完成后,您会在Windows开始菜单上看到一个Ubuntu项目。继续单击它。您将收到一条消息,说明安装过程将花费几分钟:

109d99ca9f8bd469780f6b11ff346e22.png

然后设置您的用户名和密码:

8d85dd564b935b90f62a726c700795ef.png

使用下面的sudo方法更新Linux环境是一个好主意:

7027ee1f945369860a6dfec92f33b1ff.png

如您所见,这与正常的Ubuntu升级过程相同,但现在却可以在你的Windows系统上进行。

继续尝试一些您喜欢的命令,并观察它们的工作情况。太棒了。

最后一步是使用Windows的wsl命令为此虚拟环境启用WSL2。您需要以管理员身份在PowerShell中调用wsl命令:

1ff8ee6ef5858c06b5dd4245d3ff823f.png

该wsl命令可以管理系统上安装的不同环境。使用命令wsl -l -v可以查看已安装的环境:

a838dc037ebd4f59be81f1d866f35ce3.png

从输出中可以看到,Ubuntu-18.04版本仍为WSL1 。我们如果要升级,就要使用命令wsl --set-version Ubuntu-18.04 2

fc935202308300dd0fba640c5e7012af.png

在后台,此过程在升级环境的同时还保留所有现有配置。升级可能需要几分钟。如果您感兴趣,此链接(https://aka.ms/wsl2)将提供关于WSL1和WSL2之间差异的更多详细信息。

完成后,使用wsl -l -v验证它们都在运行WSL2版本。

06c73650a98e161eea88ef16e520e90e.png

在使用它时,您应该使用此命令让WSL给所有新安装的软件设置默认使用版本2:wsl --set-default-version 2

注意:在安装此版本的时候,您可能会收到一条消息,内容为“ WSL2需要并更新其内核组件。” 如果看到此信息,请参考此博客文章(https://devblogs.microsoft.com/commandline/wsl2-will-be-generally-available-in-windows-10-version-2004/)中的信息。

至此,我们已经启动并运行了WSL2。在我们将其与python结合使用之前,我想再安装几个其他组件使开发过程简化。

助手应用

Windows Terminal

默认的Windows环境的存在的问题是它没有好的终端应用程序。正如我在本文开头提到的那样,在Linux中用命令行进行操作比在Windows中这样做更有用。幸运的是,Microsoft一直在开发一种新的Windows Terminal,该终端可以与WSL和其他控制台很好地配合使用。如果您有兴趣了解所有差异,我强烈推荐从这篇文章(https://www.hanselman.com/blog/WhatsTheDifferenceBetweenAConsoleATerminalAndAShell.aspx)获取更多详细信息。

最重要的是,我建议从Microsoft Store安装Windows Terminal。我将在其余的命令行示例中使用它:

8775467ffce0c62b68c274b2dff57b96.png

Windows Terminal的可配置性非常好,您可以用它做相当多的事。为了使本文易于管理,我这里展示另一篇包含详细信息和链接的帖子(https://www.hanselman.com/blog/ItsTimeForYouToInstallWindowsTerminal.aspx)。

我使用该终端启动了几个不同的shell。我发现编辑和配置过程比通过设置Windows快捷方式启动conda所需的步骤简单得多。

如果您想查看我的profile.json文件,我已将副本放在github上(https://github.com/chris1610/pbpython/blob/master/extras/profiles.json)。副本包含了用于启动miniconda的命令,并自定义了一些提示符。您可以使用它作为参考,但是您将需要对其进行定义以使其适合您的系统。如果您有喜欢的小技巧,可以将它们在评论中写出。

生成GUIDs

您需要为配置文件的不同部分创建自己的GUID。可以选择使用python。

70dfc2eaecbdaf4ebb24d98691141ac6.png

您最后应该考虑的是安装Cascadia字体,以获得更好的终端体验。

配置完成后,我在这里启动Linux和Windows中可能需要的各种Shell和环境:

083a706824bed6b434ef14375548d7aa.png

Miniconda

从该屏幕可以看到,我还在系统上安装了Miniconda。有趣的是,我在Ubuntu映像和Windows上都安装了一个版本。我不会这样进行安装,但是我鼓励您将其安装在Windows和WSL环境中的系统上。这是我将使用的默认python环境的设置。

VS Code

最后推荐的有用的组件是Visual Studio Code和一些扩展应用。我建议您在Windows环境中安装Visual Studio Code。

为了最大程度地利用此设置,您需要安装几个扩展应用:

·Remote-WSL

·Python Extension

·Anaconda Extension Pack

您可能会想用主题和图标去定义其他方面的内容,我鼓励您这样做。上面提到的扩展应用对于在本地Windows和Ubuntu环境中运用WSL和conda环境起着重要作用。

跨环境工作

访问文件

设置太多!怎么办?

您应该启动Ubuntu环境或Windows环境,并像往常一样使用Python。

这是一个屏幕截图,显示了带有运行着Ubuntu和PowerShell选项的终端,而另一个终端则在Windows系统上运行conda:

3a7213ee0e1a5b42b34268eaa50bf8df.png

这本身非常有用,但是真正的强大功能是您可以在WSL和Windows之间进行交互。

例如,如果您在Ubuntu环境输入explorer.exe,那么Windows将启动Explorer,并在WSL环境中显示当前目录:

4bdafbb06189206411601f5afb8b801f.png

现在您有了该Ubuntu WSL环境中的文件在Windows Explorer里的视图。

您还可以通过输入网络路径(\\wsl$\Ubuntu\home\chris),直接在Explorer中访问此环境。

999cc9bd36a1d6a7b3d992cdfca9f0a8.png

9P协议文件服务器支持这种跨环境的“戏法”,您可以通过上面屏幕截图中的mount命令查看这个9P服务器。微软在他们的博客上写了一篇不错的文章(https://devblogs.microsoft.com/commandline/whats-new-for-wsl-in-windows-10-version-1903/),文章提供了关于其工作原理的更多详细信息。

不要访问AppData文件夹

这里有一个很重要的警告。如果要跨WSL和Windows复制文件,请使用Explorer或复制的命令行。不要试图去找AppData文件夹并直接进行文件操作。此操作不被支持,并可能会产生问题。

Visual Studio Code

在各个环境中工作还有另一个棘手的难题。您可以使用WSL Visual Studio Code插件从Windows上安装的VS Code访问WSL文件系统。

如果在Ubuntu环境中执行 code. 命令,Windows将启动VS Code并连接WSL中的文件。您可以使用所有常规的VS Code功能编辑这些文件,并且所有更改都会保存在WSL环境中。您可以在左下方看到指示器,该指示器使您知道您正在与WSL交互,而不是正在与标准的Windows系统交互。

5d613f7200477cba852c8c8bea2d5e67.png

您也可以在Windows中启动VS Code,并通过命令面板访问所有正在运行的WSL环境。按Ctrl + Shift + P,然后输入Remote-WSL以查看选项。

6435ba592ca0c9fc4d4c5cca2af9b765.png

如果您有多个WSL环境设置,那么也可以适当选择其中一种。

VS Code确保您在WSL环境中编辑文件。例如,当您打开一个文件时,您只能看到WSL文件系统:

c0ec21eba75b1e9e2b31d3cf834c1a1f.png

这里有一个小惊喜,您需要确保在WSL中使用的所有VS Code插件都已安装在WSL环境中。例如,如果您看了这个屏幕截图,就可以看到如何在本地Windows环境中安装某些插件,但是还需要确保它们也安装在WSL环境中。

幸运的是,安装非常简单。实际上,VS Code会通过一个按钮提示您“Install in WSL:Ubuntu”。安装过程很简单,但需要牢记实现它的细节。

d6566a7526e993579b5cb5d08df26080.png

思考它是怎么工作的,这感觉有点疯狂,但是它的实现却是无缝衔接的,以我的经验,您很快就会习惯的。

Jupyter Notebooks

跨环境工作的另一种方法是使用网络。在研究写作本文时,我发现许多评论说在某些旧版本的WSL中访问localhost不起作用。我在使用Pelican或Jupyter Notebooks时,访问localhost进行工作却没有任何问题。我认为这是开发人员需要关注的重点领域,因此在您自己进行实验时,请记住这一点。

我建议您使用--no-browser选项以避免在启动Jupyter Notebook时出现警告。在下面的示例中,我在Ubuntu中运行Jupyter,但却在本地的Edge浏览器中查看了它。

46bc955c531ba818bc6abb91f6d5905c.png

另外请您记住,如果要从终端复制数据,请使用Ctrl+Shift+C进行复制,并使用Ctrl+Shift +V进行粘贴。您可能需要使用它来复制证书并通过Jupyter流程进行身份验证。

直接运行的应用

wsl命令是在WSL环境上操作的有力工具。它的一个功能是可以直接在Linux环境中运行可执行文件。例如,我们可以运行安装在Ubuntu环境中的fortune。

4f873f231b28d2a6a76ce0027dcc08f6.png英文原文:https://pbpython.com/wsl-python.html

译者:桃夭

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值