使用WSL在Windows上搭建Python开发环境
off999 2024-10-20 08:15 21 浏览 0 评论
简介
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效能工具)可以同时使用。
一开始可能很难理解这个概念。下面有一个截图,可从更多视角进行看待:
在此屏幕截图中,我正在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”,如下图所示:
此外,您需要至少是Build 18917的Windows 10版本。我使用的是Windows Pro,但我觉得Home版本也很好。
如果这些是系统的新设置,请在继续操作之前确保所有更新都已应用。
现在已经建立了基础,您需要使用以下PowerShell命令来打开WSL和虚拟机平台:
在此处检查设置:
您应该重启以确保安装完成。
现在已经安装好子系统,您需要从Microsoft Store安装首选的Linux发行版。我选择使用Ubuntu。该Ubuntu版本进行了一些调整,从而使它能更好地协同工作,因此我建议将Ubuntu作为第一个开始的版本。好处是,一旦你能让Ubuntu正常工作,那么就可以接着安装其他发行版,以确定最适合您的版本。
安装应该不会花很长时间。完成后,您会在Windows开始菜单上看到一个Ubuntu项目。继续单击它。您将收到一条消息,说明安装过程将花费几分钟:
然后设置您的用户名和密码:
使用下面的sudo方法更新Linux环境是一个好主意:
如您所见,这与正常的Ubuntu升级过程相同,但现在却可以在你的Windows系统上进行。
继续尝试一些您喜欢的命令,并观察它们的工作情况。太棒了。
最后一步是使用Windows的wsl命令为此虚拟环境启用WSL2。您需要以管理员身份在PowerShell中调用wsl命令:
该wsl命令可以管理系统上安装的不同环境。使用命令wsl -l -v可以查看已安装的环境:
从输出中可以看到,Ubuntu-18.04版本仍为WSL1 。我们如果要升级,就要使用命令wsl --set-version Ubuntu-18.04 2
在后台,此过程在升级环境的同时还保留所有现有配置。升级可能需要几分钟。如果您感兴趣,此链接(https://aka.ms/wsl2)将提供关于WSL1和WSL2之间差异的更多详细信息。
完成后,使用wsl -l -v验证它们都在运行WSL2版本。
在使用它时,您应该使用此命令让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。我将在其余的命令行示例中使用它:
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。
您最后应该考虑的是安装Cascadia字体,以获得更好的终端体验。
配置完成后,我在这里启动Linux和Windows中可能需要的各种Shell和环境:
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:
这本身非常有用,但是真正的强大功能是您可以在WSL和Windows之间进行交互。
例如,如果您在Ubuntu环境输入explorer.exe,那么Windows将启动Explorer,并在WSL环境中显示当前目录:
现在您有了该Ubuntu WSL环境中的文件在Windows Explorer里的视图。
您还可以通过输入网络路径(\\wsl$\Ubuntu\home\chris),直接在Explorer中访问此环境。
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系统交互。
您也可以在Windows中启动VS Code,并通过命令面板访问所有正在运行的WSL环境。按Ctrl + Shift + P,然后输入Remote-WSL以查看选项。
如果您有多个WSL环境设置,那么也可以适当选择其中一种。
VS Code确保您在WSL环境中编辑文件。例如,当您打开一个文件时,您只能看到WSL文件系统:
这里有一个小惊喜,您需要确保在WSL中使用的所有VS Code插件都已安装在WSL环境中。例如,如果您看了这个屏幕截图,就可以看到如何在本地Windows环境中安装某些插件,但是还需要确保它们也安装在WSL环境中。
幸运的是,安装非常简单。实际上,VS Code会通过一个按钮提示您“Install in WSL:Ubuntu”。安装过程很简单,但需要牢记实现它的细节。
思考它是怎么工作的,这感觉有点疯狂,但是它的实现却是无缝衔接的,以我的经验,您很快就会习惯的。
Jupyter Notebooks
跨环境工作的另一种方法是使用网络。在研究写作本文时,我发现许多评论说在某些旧版本的WSL中访问localhost不起作用。我在使用Pelican或Jupyter Notebooks时,访问localhost进行工作却没有任何问题。我认为这是开发人员需要关注的重点领域,因此在您自己进行实验时,请记住这一点。
我建议您使用--no-browser选项以避免在启动Jupyter Notebook时出现警告。在下面的示例中,我在Ubuntu中运行Jupyter,但却在本地的Edge浏览器中查看了它。
另外请您记住,如果要从终端复制数据,请使用Ctrl+Shift+C进行复制,并使用Ctrl+Shift +V进行粘贴。您可能需要使用它来复制证书并通过Jupyter流程进行身份验证。
直接运行应用
wsl命令是在WSL环境上操作的有力工具。它的一个功能是可以直接在Linux环境中运行可执行文件。例如,我们可以运行安装在Ubuntu环境中的fortune。
运行图形应用程序呢?
在大多数情况下,我一直将Windows内置应用程序用作图形应用程序。在MS Office Apps,Chrome和VS Code之间,这几个软件涵盖了我的主要需求。如果要使用Gimp或Inkscape之类的应用程序,我会使用Windows版本。
但是,我发现了一些很好的应用程序,但在Windows中却没有类似的好应用。我使用的一个简单应用是用Trimage来压缩图像。
我可以在Ubuntu中安装它,但是当我尝试执行它时,出现错误:trimage.py: cannot connect to X server
解决此问题的方法是在Windows上安装X Server。这有一些选择,如X410的付费版本。但我选择使用VcXsrv。
请注意,它不是Win 10内的应用程序,因此看起来有点难看。有一些方法能使它看起来好一点,但是我没有去找,因为那是少数应用程序不得已才用的方法。我分享它是为了本文的完整性。
无论如何,请安装VcXsrv并运行它:
我需要选择disable access Control:
一旦启动,它就会在系统盘中等候连接。
为了配置您的Ubuntu环境,请确保您的.bashrc文件中包含下面这两行。完成更改后,重新启动shell:
如果所有配置正确,您会看到Trimage:
它压缩本文中的这个图像的效果很好。
如果您确实需要运行更好的图形环境,则可以安装轻量级的桌面环境(如xfce)并启用它,下面是安装方法:
下面的屏幕截图显示了所有这些一起工作的忙碌景象:
该图显示了:
·VS Code在WSL环境中编辑文件
·本地Windows X server中显示了在WSL上运行的完整xfce桌面
·WSL环境正在为pelican blog服务
工作流程
既然您已经在一台机器上拥有了所有这些用于python开发的选项,那么您需要确定如何最好地配置以满足您的需求。我仍在改进我的过程,但是现在我正在做的是:
·Chrome on Win 10:常规网页浏览,电子邮件,Jupyter Notebook
·Visual Studio Code on Win10:文本和python文件编辑
·Visual Studio:为博客写重构文本文章
·Ubuntu on WSL:在Pelican博客上维护和开发内容
·Ubuntu on WSL:根据需要的命令行工具
·python on WSL:博客内容和一般的开发或实验
·python on Win10:处理Windows特定任务(Excel,Word等)时的开发
很重要的一点是,即使WSL和Windows环境可以相互“交谈”,但也确实需要将它们的职责分开。例如,在WSL中使用git时,建议您在WSL环境中对文件进行操作。Windows也是如此——不要尝试直接从WSL文件系统运行Windows可执行文件。
最后,我仍然建议您使用conda环境来保持python环境的整洁。我选择在Ubuntu上有一个conda环境,在Windows上也有一个conda环境,以便确保博客的文章可以在Windows和Linux环境中正常工作。
结论
WSL是使Windows成为一流的开发平台的重要一步。我在家一直是个Ubuntu用户,而在工作时却是Windows用户。WSL为我提供了一个平台,让我可以两全其美。我能利用所有工具,并且在Ubuntu工作中还能灵活地使用MS Office工具。另外我相信我需要的任何商业软件都可以安装在该系统上。
希望这篇指南对您有所帮助,并且可以帮助您为Windows和Linux构建python开发环境。如果您还有其他建议,请在评论中告诉我。
英文原文:https://pbpython.com/wsl-python.html
译者:桃夭
相关推荐
- SPC相关的计算用excel和python实现【源码下载】
-
做SPC分析涉及到很多计算,比如CPK、PPK、概率图、PPM等等,网上很多公式,但具体实现却不是那么容易的。我们整理了这些用excel和python实现的代码。包括但不限于以下的内容:SPC分析中的...
- Python学不会来打我(34)python函数爬取百度图片_附源码
-
随着人工智能和大数据的发展,图像数据的获取变得越来越重要。作为Python初学者,掌握如何从网页中抓取图片并保存到本地是一项非常实用的技能。本文将手把手教你使用Python函数编写一个简单的百度图片...
- django python数据中心、客户、机柜、设备资源管理平台源码分享
-
先转发后关注,私信“资源”即可免费获取源码下载链接!本项目一个开源的倾向于数据中心运营商而开发的,拥有数据中心、客户、机柜、设备、跳线、物品、测试、文档等一些列模块的资源管理平台,解决各类资源集中管理...
- 熬夜也值得学习练手的108个Python项目(附源码),太实用了!
-
现在学编程的人越来越多,Python因为简单好上手、功能又强大,成了很多人的首选。不管是做数据分析、人工智能,还是写网络程序、自动化脚本,Python都能派上用场。而且它诞生的时间比网页还早,作为...
- 这五个办公室常用自动化工具python源码,复制代码就能用
-
办公室自动化现在能看这文章的恐怕大部分都是办公室久坐工作者,很多都有腰肌劳损、肩周炎等职业病,难道就不能有个工具缓解一下工作量吗?那么恭喜你点进了这篇文章,这篇文章将使用python直接实现五个常...
- 将python源代码封装成window可执行程序教程
-
将python源代码封装成window可执行程序教程点击键盘win+r打开运行框在运行框中输入cmd,进入到命令行。在命令行中输入piplist去查看当前电脑中所有的库检查是否有pyinstall...
- Python 爬虫如何爬取网页源码?(爬虫获取网页源代码)
-
下面教大家用几行代码轻松爬取百度首页源码。什么是urllib?urllib库是Python内置的HTTP请求库,它可以看做是处理URL的组件集合。urllib库包含了四大模块,具体如下:urllib....
- Python RPC 之 Thrift(python是做什么的)
-
thrift-0.12.0python3.4.3Thrift简介:Thrift是一款高性能、开源的RPC框架,产自Facebook后贡献给了Apache,Thrift囊括了整个RP...
- 用Python编写FPGA以太网MAC(附源码下载方式)
-
来源:EETOP作者:ccpp123略作了解后发现,MyHDL不是高层次综合,它实际上是用Python的一些功能实现了一个Verilog仿真器,能对用Python写的仿Verilog语言进行仿...
- python爬虫常用工具库总结(python爬虫工具下载)
-
说起爬虫,大家可能第一时间想到的是python,今天就简单为大家介绍下pyhton常用的一些库。请求库:实现基础Http操作urllib:python内置基本库,实现了一系列用于操作url的功能。...
- 手把手教你使用scrapy框架来爬取北京新发地价格行情(理论篇)
-
来源:Python爬虫与数据挖掘作者:霖hero大家好!我是霖hero。上个月的时候,我写了一篇关于IP代理的文章,手把手教你使用XPath爬取免费代理IP,今天在这里分享我的第二篇文章,希望大家可以...
- 2025年Python爬虫学习路线:第1阶段 爬虫基础入门开始
-
这个阶段的目标是让你熟悉Python的基础知识、了解HTTP请求和HTML是如何工作的,并最终完成你的第一个爬虫小项目——抓取名言!按照计划,我们首先要打好Python基础。Python就像是我们要...
- 如何入门 Python 爬虫?(python零基础爬虫)
-
1.很多人一上来就要爬虫,其实没有弄明白要用爬虫做什么,最后学完了却用不上。大多数人其实是不需要去学习爬虫的,因为工作所在的公司里有自己的数据库,里面就有数据来帮助你完成业务分析。什么时候要用到爬虫呢...
- 突破爬虫瓶颈:Python爬虫核心能力提升与案例实操
-
技术控必看!Python爬虫高手进阶全攻略,解锁数据处理高阶玩法在数字化时代,Python爬虫早已成为数据探索者手中的得力工具。从基础的网页抓取到复杂的数据处理,每一次技术升级都能带来新的突破。本文将...
- 网络爬虫开源框架(网络爬虫的框架)
-
目前开源爬虫下载框架是百花齐放,各个编程语言都有,以下主要介绍其中重要的几个:1)python:scrapy,pyspider,gcrawler2)Java:webmagic,WebCollector...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- SPC相关的计算用excel和python实现【源码下载】
- Python学不会来打我(34)python函数爬取百度图片_附源码
- django python数据中心、客户、机柜、设备资源管理平台源码分享
- 熬夜也值得学习练手的108个Python项目(附源码),太实用了!
- 这五个办公室常用自动化工具python源码,复制代码就能用
- 将python源代码封装成window可执行程序教程
- Python 爬虫如何爬取网页源码?(爬虫获取网页源代码)
- Python RPC 之 Thrift(python是做什么的)
- 用Python编写FPGA以太网MAC(附源码下载方式)
- python爬虫常用工具库总结(python爬虫工具下载)
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python自定义函数 (53)
- python进度条 (67)
- python吧 (67)
- python字典遍历 (54)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python串口编程 (60)
- python读取文件夹下所有文件 (59)
- java调用python脚本 (56)
- python操作mysql数据库 (66)
- python字典增加键值对 (53)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python人脸识别 (54)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)