起初是看到《Python编程:从入门到实践(第2版)》新增内容,本来是想试验一下Pyhton3.8 以上版本的 f 字符串功能,但过程中学到了各种各样的东西就记录一下。本片为第一篇 Shebang 相关的文章。

Shebang

Shebang 就是放在 .py 文件头的 #! /usr/bin/env python3.10 这一行,用来指定解释器的路径以及版本。

Linux

起初是没打算在电脑上装新版本 Python 的,所以借用的在线 Python 环境——谷歌的 Colaboratory(以下简称Colab) ,Colab提供的是 Ubuntu 环境。

Linux 下 Shebang 的执行并没有什么大问题。需要注意的有两件事,一个是行结尾的格式(实际上是 Colab 的问题);一个是执行文件时命令选择 ./<filiname> 而不是 python <filename>

以下为 Colab 上的操作流程:

首先安装 Pyhton3.10 和 dos2unix 。Colab 中保存的文件行结尾是 \r\n 格式,需要用 dos2unix 转换成 Unix 格式下的 \n
! 是在Colab 中运行 bash 命令的前缀,和 Shebang 中的 ! 本质相同。

!apt install python3.10
!apt install dos2unix

建立一个名为 test.py 的文件,内容如下:

#! /usr/bin/env python3.10
#-*- coding: UTF-8 -*-
import sys
print(sys.version)

先用 dos2unix 转换文本格式。
执行文件时使用 ./test.py 指令,不要使用 python test.py。后者会先选择默认解释器,再打开文件,Shebang 行就无法发挥作用。

!dos2unix test.py
!./test.py

输出如下:

3.10.1 (main, Dec 21 2021, 18:59:49) [GCC 7.5.0]

Windows

2.1. 命令行运行

在 Windows 的 Shell 中可以直接输入 py <filename>,Windows 下的 py 命令会先打开一个启动器,这个启动器在读到 #!usr/bin/env python 等格式的 Shebang 行时,并不会把 usr/bin/env 当作一个严格路径。

Pyhton 启动器 py.exe#! /usr/bin/env python3.10#!py -3.10#!python3.10 等指令都视为可执行的虚拟命令,并由启动器管理打开的解释器版本。Python官方文档:Shebang Lines

注:在 Windows 的 shell 中,仅Windows Store 安装的 Python 版本支持命令 python3.10。安装包版本下 pyhton 命令不支持指定 Python 版本,仅支持启动器命令 py -3.10

2.2. 编辑器运行

Windows 下的编辑器我用的是 VS Code,VS Code 下的 Python、Code Runner 插件都提供了代码运行功能。

Code Runner

Code Runner 插件目前无法识别 Linux 格式 Shebang。

解决方法一是禁用掉 Shebang,在设置中将 "code-runner.respectShebang" 设为 false

解决方法二是使用 Windows 命令行格式 Shebang,#!py -3.10

Pyhon插件

首先将设置中的默认解释器路径从 python 改为 py ("python.defaultInterpreterPath": "py"),和 Linux 相同,python 指令会先选择解释器再执行文件,py 指令在 Windows 环境下会先打开启动器读取 Shebang 行。

然后按键Ctrl/Command + Shift + P打开 VS Code 命令,输入python.setInterpreter,选择 【Python:选择解释器】->【<当前工作区名称>】->【使用默认Pyhton解释器路径】(应显示为 py)。

Python 插件同时支持 Linux 和 Windows 格式的 Shebang:#! /usr/bin/env python3.10#!py -3.10

注:本质上, VS Code 两个插件的区别在于:Code Runner 插件实际上是先将 Shebang 行交给了 shell 运行,因而仅支持 Windows 下 shell 可识别的命令;
而 Python 插件是先打开启动器 py.exe(通过设置),将 Shebang 行(以及整个文本)交给了启动器运行。

Linux与Windows下Shebang的执行相关推荐

  1. Linux和Windows下部署BeetleX服务网关

    有朋友希望写一篇BeetleX服务网关部署到Linux和windows下并以服务的方式运行的介绍文章.接下详细介绍如何做并简单介绍一下网的使用.首先需要在官网(beetlex-io.com)下载对应版 ...

  2. 从Docker在Linux和Windows下的区别简单理解Docker的层次结构

    上篇文章我们成功在Windows下安装了Docker,输出了一个简单的Hello World程序.本文中我们将利用Docker已有的云端镜像training/webapp来发布一个简单Python的W ...

  3. VLC-3.0.0(Nightly版)在Linux和Windows下的编译步骤详解

    VLC 3.0.0 Compile vlc的编译一直是个大坑,做过音视频开发的不少人想必都踩过,开篇引用官方wiki一句话: Compiling VLC is not an easy task. 本文 ...

  4. linux编译c如何延时,linux和windows下,C/C++开发的延时函数,sleep函数

    简介: 函数名: sleep 功 能: 执行挂起一段时间 用 法: unsigned sleep(unsigned seconds); 在VC中使用带上头文件 #include 在gcc编译器中,使用 ...

  5. windows4t硬盘Linux分区工具,linux挂载windows下的硬盘分区

    linux挂载windows下的硬盘分区 (2009-10-18 12:37:56) 标签: 电脑 windows linux 硬盘分区 sda it 在linux下挂载windows分区 想随时随地 ...

  6. linux 访问windows 端口,Linux和Windows下查看端口详解

    Linux和Windows下查看端口详解 我们常会在计算机上安装很多软件,如果喜欢冲浪的话,必然就会用的软件的通信,当然包括web开发的,应用多了,难免会要不小心占用端口的问题,这时候用命令来处理是最 ...

  7. linux 创建线程函数吗,[笔记]linux下和windows下的 创建线程函数

    linux下和windows下的 创建线程函数 #ifdef __GNUC__ //Linux #include #define CreateThreadEx(tid,threadFun,args) ...

  8. windows下bat处理执行Mysql的sql语句

    这篇文章主要介绍了windows下bat批处理执行Mysql的sql语句,需要的朋友可以参考下 有时候我们需要用bat来定时执行mysql那么就可以参考下面的代码 直接上代码: @ECHO OFF S ...

  9. linux与windows下开发,Linux 与 Windows下开发感受

    Linux 和 Windows环境下开发各有优点.以下Linux 下使用感受是在Ubuntu11.04,别的发行版还没试过. 至于各自的缺点,都可以通过各种方法,得到或多或少地解决.至于要花费多大的精 ...

最新文章

  1. [Share]10 Free EBooks for Web Designers
  2. 计算机网络:三层ISP结构
  3. 获取不到app.config里面的数据库连接字符串的解决方法
  4. 一些linux知识和http知识
  5. webpack devserver配置_在webpack中使用babel
  6. 微信支付携手云闪付APP上线支付立减新优惠
  7. 0顶会入场大厂算法岗的正确姿势(干货总结)
  8. 博客园是否提供trackback的rss
  9. “现有人工智能都是二流的”
  10. 1.Tow Sum(两数和)
  11. 今晚8:00 | 杜克大学计算进化智能中心(CEI Lab)—— 联邦学习专题!
  12. Butterworth低通滤波器
  13. 记录一下把域名从阿里云服务商转入到华为云
  14. uniapp小程序 安卓和ios时间兼容性问题解决方案
  15. excel能和html链接吗,非常棒的 Excel 超链接功能可以跳转到网址和邮箱等
  16. mysql 表结构的复制
  17. 2021“载歌在谷”线上春晚震撼来袭!
  18. Windows服务器怎么才能长时间保持远程桌面不自动断开
  19. 华为云面试指南—Rainbow
  20. 轮播图实现方法一——层叠轮播图

热门文章

  1. js 删除对象里的某个属性
  2. 服务器存储(基础概念及历史)
  3. 无法打开xpdf软件包
  4. java按周获取时间
  5. geohash之2d 地理空间索引
  6. HR必看的经典管理书籍推荐
  7. TDL3 Source Code
  8. 女装搭配的方法,搭配需要注意的地方
  9. git连接华为软件开发云
  10. 域名DNS解析工具ping/nslookup/dig/host