如何指定特定Python 3子版本运行带#!python3的脚本
强制指定Python 3.6.2运行脚本的方案
当然有办法让你的脚本强制用Python 3.6.2执行,下面给你几个实用的解决办法,以及针对你问题的详细解答:
一、直接调用对应版本的可执行文件
这是最直接可靠的方式,你已经提到了思路,只需要把脚本作为参数传给3.6.2版本的python.exe即可。比如你的ArcGIS Pro对应的3.6.2解释器路径大概是这样(请替换成你实际的安装路径):
"C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\python.exe" your_script.py
这种方式完全绕开了系统默认的python3别名,精准指定要使用的子版本。
二、修改脚本的Shebang行(针对类Unix终端或支持Shebang的Windows终端)
如果你用的是Git Bash、WSL这类支持Shebang的终端,可以直接把脚本开头的#! python3替换成3.6.2解释器的绝对路径:
#! "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\python.exe" import arcpy print("Gurminder")
不过要注意:Windows原生的CMD或PowerShell对Shebang的支持有限,这种方式在原生终端里可能不会生效,还是得用直接调用路径的方法。
三、用虚拟环境绑定特定版本(推荐长期使用场景)
如果需要频繁用3.6.2运行这类脚本,建议给3.6.2创建专属虚拟环境,激活后所有python命令都会指向该版本:
- 创建虚拟环境(路径替换为你3.6.2的解释器路径):
"C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\python.exe" -m venv py362_arcgis_env - 激活虚拟环境:
- CMD里执行:
py362_arcgis_env\Scripts\activate.bat - PowerShell里执行:
py362_arcgis_env\Scripts\Activate.ps1
- CMD里执行:
- 激活后直接运行脚本:
python your_script.py,此时用的就是3.6.2版本。
关于指定子版本的参数问题
很遗憾,Python本身没有提供通过python3加参数来指定子版本的功能。python3只是系统默认Python 3版本的别名,它指向哪个子版本完全由系统环境变量的优先级决定——哪个版本的路径排在前面,就会被优先调用。所以没法通过python3 --version 3.6.2这类参数来切换子版本,只能通过上面的路径调用、虚拟环境或者调整环境变量顺序(不推荐全局修改,可能影响其他脚本)来实现。
内容的提问来源于stack exchange,提问作者Gurminder Bharani




