如何在Windows运行Python脚本?
-
20-09-2019 - |
题
我有一个简单的脚本blah.py(使用Python 2):
import sys
print sys.argv[1]
如果由我执行我的脚本:
python c:/..../blah.py argument
它打印参数,但如果我通过执行脚本:
blah.py argument
发生错误:
... IndexError
所以参数不传递给脚本。
python.exe在PATH。文件夹blah.py也PATH。结果 python.exe是默认程序来执行* .py文件。
什么问题?
解决方案
当你执行一个脚本,而不在前面键入“蟒蛇”,你需要了解Windows如何调用该程序两件事情。首先是要找出什么样的文件Windows认为它是:
C:\>assoc .py .py=Python.File
接下来,你需要知道的Windows是如何执行与扩展的东西。它与文件类型“Python.File”相关的,所以这个命令显示了它会做:
C:\>ftype Python.File Python.File="c:\python26\python.exe" "%1" %*
所以,我的机器上,当我输入“blah.py富”,它会比我输入了完整的东西自己执行这个确切的命令,在结果没有什么区别:
"c:\python26\python.exe" "blah.py" foo
如果你键入同样的事情,包括引号,然后你会得到相同的结果时,你只需键入“blah.py富”。现在,你在一个位置,找出你的问题的其余部分自己。
(或张贴在你的问题更多有用的信息,就像你在控制台中看到实际的剪切和粘贴拷贝。需要注意的是人谁做这种类型的东西得到了他们的提问投票了,他们获得的声誉分,更多的人有可能帮助他们很好的答案。)
带来从评论:
即使ASSOC和FTYPE显示正确的信息,则可能发生的是,参数被剥离。什么在这种情况下可能有助于直接固定为Python相关注册表项。设置
HKEY_CLASSES_ROOT\Applications\python26.exe\shell\open\command
键:
"C:\Python26\python26.exe" "%1" %*
有可能的,先前,%*
失踪。类似地,设置
HKEY_CLASSES_ROOT\py_auto_file\shell\open\command
到相同的值。请参见的http://礼.thegreenplace.net /十二分之二千零十/ 14 /问题通过-参数到Python的脚本上窗口/
HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command
注册表路径可能会发生变化,使用或python26.exe
或python.exe
取其已经在注册表中。
其他提示
您应该默认的应用程序来处理Python文件是python.exe。
右键单击一个* .py文件,选择“打开方式”对话框。在那里选择“python.exe”,并检查“始终使用该程序进行这个文件类型”(类似的东西)。
那么你的Python文件将永远使用python.exe运行
此外,如果你希望能够在没有文件名的末尾键入.py
(或.pyw
)运行Python脚本,你需要.PY
(或.PY;.PYW
)在PATHEXT环境添加到扩展名列表变量
在视窗7:
在电脑点击右键点击
左键单击属性点击
左键单击高级系统设置,点击
左键单击高级选项卡点击
左键单击环境变量...点击
在“系统变量”向下滚动,直到你看到PATHEXT结果
在PATHEXT左键单击选中它,点击
左键单击编辑...点击
编辑“变量值”,以便它包含;.PY
(End键将跳到最终)结果
左键单击OK点击
左键单击OK点击
左键单击OK点击
请注意#1:命令提示窗口将看不到变化的W / O被关闭并重新打开
。注意#2:在.py
和.pyw
延伸部之间的区别是,在运行时前者打开一个命令,而后者不
在我的电脑,我添加;.PY;.PYW
作为最后(最低优先级)的扩展,因此,“之前”和“之后”的PATHEXT值分别为:结果
之前:.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
结果
后.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW
结果
下面是一些指导性的命令:
C:\>echo %pathext%
.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW
C:\>assoc .py
.py=Python.File
C:\>ftype Python.File
Python.File="C:\Python32\python.exe" "%1" %*
C:\>assoc .pyw
.pyw=Python.NoConFile
C:\>ftype Python.NoConFile
Python.NoConFile="C:\Python32\pythonw.exe" "%1" %*
C:\>type c:\windows\helloworld.py
print("Hello, world!") # always use a comma for direct address
C:\>helloworld
Hello, world!
C:\>
如何在Windows中执行Python脚本?
您可以安装 pylauncher 。它是用来发射的.py,.pyw,pyc文件,.pyo文件和支持多个Python的安装:
T\:> blah.py argument
您可以在不指定.py扩展名,如果您有运行的.py的Python脚本,.pyw在PATHEXT环境变量:
T:\> blah argument
这增加了对家当(#!
标题行)的支持,如果你安装了多个版本,以选择在Windows所需的Python版本。你可以使用* nix的兼容语法#! /usr/bin/env python
。
可以明确地指定例如版本,采用最新安装了Python 3版本来运行:
T:\> py -3 blah.py argument
还应该解决您的sys.argv
问题作为一个副作用。
我遇到同样的问题,但在需要打包我的Windows用户代码的情况下(从Linux的未来)。 我的包中包含多个具有命令行选项的脚本。
我需要这些脚本来得到安装在Windows用户的计算机上的适当位置,使他们可以在命令行中调用它们。 由于包是所谓人性化,问我的用户更改他们的注册表来运行这些脚本是不可能的。
我遇到了一个解决方案,在连续使用附带的蟒蛇包乡亲Python脚本 - 检查你的蟒蛇/ scripts目录的例子
有关的Python脚本test
,创建两个文件:a。test.bat
和test-script.py
test.bat
如下所示(在.bat
呼叫Anaconda\Scripts
的python.exe
文件与我适于我的目的的相对路径):
@echo off
set PYFILE=%~f0
set PYFILE=%PYFILE:~0,-4%-script.py
"python.exe" "%PYFILE%" %*
test-script.py
是你的实际Python脚本:
import sys
print sys.argv
如果你留在你的本地目录中这两个文件可以通过执行通过.bat
文件调用您的Python脚本
test.bat hello world
['C:\\...\\test-scripy.py', 'hello', 'world']
如果您将这两个文件复制到在您PATH
的位置(如Anaconda\Scripts
),那么你甚至可以离开了.bat
后缀调用脚本
test hello world
['C:\\...Anaconda\\Scripts\\test-scripy.py', 'hello', 'world']
免责声明:我不知道发生了什么事情和如何工作的,因此希望任何解释
在<强>窗强>,
要的运行Python模块而无需键入 “蟒”下,
- >右击任何蟒(* PY)文件
- >设置有属性的开至 “python.exe”
- >检查“始终使用该程序进行这个文件类型”
- >追加python.exe的路径可变环境例如附加 C:\ Python27到PATH环境变量
要生成一个python模块而无需键入 “py” 为扩展名强>
- >编辑PATHEXT系统变量和追加“py”为扩展列表
找到一个非常有用的答案此处: 如何在CMD运行不同版本的Python?
我会建议使用Python启动的Windows实用程序,引进了成Python 3.3前一阵子。您也可以手动下载并直接从作者的网站与早期版本的Python 2和3的使用安装。
不管你如何获得它,在安装后,将已与所有的标准Python文件扩展名相关联的本身(即的.py,.pyw,pyc文件,和.pyo文件)。您不仅能够明确地控制使用的版本在命令提示符下,也对脚本,通过脚本基础上加入的Linux / Unix-Y家当#!在在/ usr / bin中/ env的pythonX评论开始你的Python脚本。
作为JF塞巴斯蒂安表明, Python的启动为Windows 是在Windows推出不同版本的Python的最好的和默认的选择。它曾经是一个第三方工具,但现在却因为Python 3.3正式支持。
新的3.3版本。
Python的发射器用于Windows是一个工具,它有助于在不同Python版本的位置和执行。它允许脚本(或命令行),以指示用于特定Python版本的偏好,并且将查找并执行该版本。
这是一个伟大的工具,只是用它!
您可以从任何地图执行python.exe? 如果你不这样做,赤如果您在PATH环境为python.exe适当的值
您在同一个目录中比blah.py.通过发出命令检查这一点 - >编辑blah.py和检查,如果你能打开此文件
修改强>
在这种情况下,你不能。 (蟒ARG 意味着你打电话python.exe丝毫一些参数,这些参数蟒假定是要运行的脚本的文件名)
您可以创建 bat文件白衣在路径图线并运行.bat文件
例:结果 在路径地图中的一个创建 blah.py.bat 编辑文件,并把线
python C:\Somedir\blah.py
您现在可以从anywere运行blah.py,监守你并不需要运行该批处理文件时把蝙蝠extention
如果这是我的理解,它是这样的:
C:\Users\(username)\AppData\Local\Programs\Python\Python(version)
COPY(未删除)python.exe和重命名为py.exe并执行:
py filename.py
只需运行命令:
C:>python .\file_name.py
假设文件名是相同的文件夹内和Python已经被添加到环境变量。