华人澳洲中文论坛

热图推荐

    Mac是最佳的Linux,Win也是最佳的Linux,只要Linux做欠好Linux

    [复制链接]

    2023-3-15 12:47:53 49 0

    只管条条路途通罗马,但毕竟有的路走得更安稳更快捷,更不要说有的人乃至就住在罗马。关于Python开发而言,你的开发环境有多好用,你离罗马就有多近。因此,咱们的旅程从这里开始。
    本章首先引见Python开发的操作零碎环境,而后引见几个最盛行的集成IDE,并对他们的特征进行了对比,供读者选择。
    选择哪种操作零碎?


    看下来操作零碎是一个与编程言语有关的话题,特别是象Python这样的开发言语,它编写的顺序简直能够运转在任何一种操作零碎上。然而,依然有一些奥妙的差别需求咱们去斟酌。首先,Python更合适于数据剖析、人工智能和后盾开发,而不是用于开发桌面和挪动端运用。而无论是大数据剖析和人工智能,仍是后盾开发,往往都部署在Linux办事器环境下。并且,这些运用所依赖的生态,也往往构建在Linux下(好比大数据平台和散布式计算平台)。一些首要的的顺序库,只管终究可能都会兼容多个操作零碎,但因为操作零碎之间的差别,它们在不同操作零碎下的版本公布方案往往是纷歧样的。一些开源的顺序和类库往往会优先斟酌Linux操作零碎,它们在Linux上的测试似乎也更充沛。
    咱们能够举出得多这样的例子,好比,量化买卖是Python运用最普遍的畛域之一。而pytalib则是其中罕用的一个技术剖析库。该库使用了一个C的模块,需求在装置时进行编译。在Windows下进行编译,需求下载和配置一系列的Visual C++的编译工具,对Python顺序员而言,这些操作会有一定难度,由于得多概念都是Python顺序员其实不相熟的。而假如你使用的是Linux操作零碎,只管编译依然是必需的,但装置和编译只需求运转一个脚本便可。
    不单单是Python顺序库如斯。咱们需求依赖的各种办事可能也是如斯。好比,只管你能够在Windows机器上装置桌面版的Docker,而后运转一些Linux容器,但Windows下Docker对资源的利用远不如在Linux上去得充沛 — 它们是在Docker办事启动时就从零碎中划走的,无论当下是不是有容器在运转,这些资源都无奈被其它Windows顺序使用。从基本上讲,这类差别是Windows不克不及提供容器级别的资源隔离酿成的。
    在本书的前面,咱们将讲到CI/CD,这些都需求使用容器技术。那时,您将更为领会到使用Linux的种种便利。好比,咱们将会使用Github Actions提供的容器来运转测试,然而,由于受权的问题,收费版的Github CI提供的容器将不包罗Windows。
    假如这些理由还不克不及压服您,咱们还能够看看少数资深顺序员是如何选择操作零碎的。下图是StackOverflow网站在2022年的一个考察:


    从图中能够看出,假如把Linux本身的使用量与wsl的使用量(WSL也是一种Linux)加在一同,Linux曾经是排名第一的操作零碎。
    基于上述缘故,咱们保举使用Linux作为您开发Python名目的操作零碎。本书中提到的工具、示例和顺序库,如非特别提到,也都默许地使用Linux作为运转环境,并在Linux下测试经过。
    然而,您极可能其实不会喜爱这个倡议,由于极可能您的电脑就是MacOS或者Windows。
    好动静是,MacOS和Linux都是所谓的“类Unix”操作零碎,它们之间有极高的类似度。所以,假如您的电脑是MacOS操作零碎,您大可不用此外装置一个Linux。假如您的电脑是Windows操作零碎,咱们在上面也提供了三种计划,让您的机器也能运转一个虚构的Linux操作零碎用于开发。


    Windows下的Linux环境
    在Windows下有三种构建Linux虚构环境的形式。其中之一是Windows的原生计划,即便用Windows Subsystem for Linux(下列简称WSL),其它两种计划则分别是Docker和虚构机计划。
    WSL计划
    WSL是Windows 10的一个新功用。经过WSL,在Windows之上,运转了一个GNU/Linux环境。在这个环境里,绝大少数Linux命令行工具和办事均可以运转,而不需求设置双零碎,或者承当虚构机带来的额定代价。
    以后有两个版本可用,即v1和v2, 作者更保举使用v1。WSL v2的体验更象一台真实的虚构机,因此与windows集成性反而更差一些。
    装置WSL
    假如您的windows 10是2004及更高版本,或者是Windows 十一,则装置只需求一条命令便可实现:
    wsl --install --set-defalut-version=1
    这将装置WSL v1版到您的机器上。假如是稍早一点的零碎,则需求履行下列步骤:
    1. 首先,启用“合用于Linux的Windows子零碎”功用:


    2. 设置后,需求重启一次电脑。
    3. 从Windows运用商店搜寻装置一个Linux发行版,这里的示例中咱们使用Ubuntu:


    当初,在搜寻栏输出Ubuntu,就会关上Ubuntu shell。因为是第一次运转,此时会提醒咱们输出用户名和口令。这样WSL就装置胜利了。尔后,也能够从搜寻框输出`wsl`命令来启动这个零碎。
    定制WSL
    使用WSL v1版本是一种特殊的体验。它既象一个虚构机,但又不足部份功用,好比,它没有后盾办事这个概念。咱们能够在其中装置一些办事,好比Redis或者数据库,但这些后盾办事其实不会随WSL一起启动,必需得经由咱们手动启动。然而,咱们能够经过一些定制,来使得WSL的使用体验更接近一台虚构机。
    咱们的定制将完成两个功用,一是让WSL虚构机随Windows自动启动。二是当WSL启动后,它能自动运转一个ssh办事,这样咱们就能随时衔接使用这台WSL虚构机。学会这个定制之后,读者固然也能够让WSL启动之后,自动运转更多的后盾办事。
    咱们需求写三个脚本,一个start.vbs,一个control.bat和一个co妹妹ands.txt,而且减少一个开机自动履行的方案工作。当Windows开机后,这个方案工作自动履行,调用start.vbs来履行control.bat, 而control.bat则会启动WSL(及其依赖的Windows办事),并在WSL环境下履行定义在co妹妹ands.txt中的那些命令--即要在WSL中运转的办事,好比ssh server。全部进程如下图所示:


    首先,咱们在co妹妹ands.txt文件中定义要在WSL中运转的后盾办事:
    /etc/init.d/cron /etc/init.d/ssh
    而后,咱们编写一个批处置脚本,用以启动WSL,并履行上述命令:


    而后咱们编写一个start.vbs脚本,来履行control.bat:


    最初,咱们向方案工作顺序中添加一个新的开机启动工作:




    需求阐明的是,经过Windows运用商店装置的Ubuntu子零碎,它应该曾经装置好了ssh-server,咱们在上述操作中所做的事,只不外是让它随WSL一同启动罢了。然而,假如您发现您的WSL中并无装置ssh-server,您也能够自行装置。毕竟,这就是一台Linux办事器,您能够在下面装置Linux上的绝大少数软件。
    经过运用上述计划,您就在Windows上具有了两个能够同时运转的操作零碎。特别值得一提的是,在您不使用WSL的时分,它只占用很少的CPU和内存资源(仅限WSL 1.0)。这是其它虚构化计划所无奈相比的。
    在本书写作时,WSL 2.0曾经有了反对图形化界面的预览版,称之为wslg。将来这个版本将合并到WSL中,随Windows一同发行的正式版发行。下图是wslg图形化界面的一个成果图:


    虽然这与本书的宗旨有关,但最少也给了咱们一个持续使用Linux的理由,就连微软都这么当真地做Linux了,您还要持续使用Windows来做开发吗?

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    返回列表 本版积分规则

    :
    注册会员
    :
    论坛短信
    :
    未填写
    :
    未填写
    :
    未填写

    主题31

    帖子41

    积分189

    图文推荐