如何在Windows运行Python脚本?如何在Windows运行Python脚本?(How to

2019-05-08 20:30发布

我有一个简单的脚本blah.py(使用Python 2):

import sys
print sys.argv[1]

如果我通过执行我的脚本:

python c:/..../blah.py argument

它打印的说法,但如果我被执行脚本:

blah.py argument

出现错误:

IndexError ...

所以参数不传递给脚本。

python.exe的路径。 文件夹blah.py也PATH。
python.exe是默认程序来执行* .py文件。

问题是什么?

Answer 1:

当你没有在前面输入“蟒蛇”执行脚本,你需要了解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://eli.thegreenplace.net/2010/12/14/problem-passing-arguments-to-python-scripts-on-windows/

HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command的注册表路径可能会有所不同,使用python26.exepython.exe或任何已经在注册表中。

HKEY_CLASSES_ROOT\py_auto_file\shell\open\command



Answer 2:

你应该做的默认应用程序来处理Python文件被python.exe。

右键单击一个* .py文件,选择“打开方式”对话框。 在那里选择“python.exe”并选中“始终使用该程序进行这个文件类型”(类似的东西)。

那么你的Python文件将永远使用python.exe运行



Answer 3:

此外,如果您希望能够在不键入运行Python脚本.py (或.pyw )上的文件名的最后,你需要添加.PY (或.PY;.PYW ),以扩展名列表在PATHEXT环境变量。

在Windows 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:\>


Answer 4:

如何在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 #! /usr/bin/env python

您可以明确指定版本例如,使用安装了Python 3版本的最新运行:

T:\> py -3 blah.py argument

还应该解决您的sys.argv的问题作为一个副作用。



Answer 5:

我遇到同样的问题,但在需要打包我的Windows用户代码的情况下(从Linux的未来)。 我的包中包含了一些命令行选项的脚本。

我需要这些脚本来得到安装在Windows用户的计算机上的适当位置,使他们可以在命令行中调用它们。 由于包是所谓人性化,问我的用户更改他们的注册表来运行这些脚本是不可能的。

我遇到了一个解决方案,在连续使用乡亲来与他们的蟒蛇包Python脚本 - 检查你的蟒蛇/ scripts目录中的例子。

对于Python脚本test ,创建两个文件:一个test.battest-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

如果你留在你的本地目录中这两个文件,你可以通过调用你的Python脚本.bat做文件

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']

免责声明:我不知道发生了什么事情和如何工作的,因此希望得到任何解释。



Answer 6:

Windows中

运行一个Python模块,而无需键入“蟒蛇”,

- >右键点击任何一条蟒蛇(。* PY)文件

- >设置财产露天“python.exe”

- >选中“始终使用该程序进行这个文件类型”

- >追加python.exe的路径可变环境例如追加C:\ Python27到PATH环境变量。

运行一个Python模块,而无需键入“py”为扩展名

- >编辑PATHEXT系统变量并追加“py”为扩展名的列表。



Answer 7:

发现一个非常有用的答案在这里 : 如何运行在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版本的偏爱,并会查找并执行该版本。

这是一个伟大的工具,只是用它!



Answer 8:

您可以从任何地图执行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



Answer 9:

如果这是我的理解,它是这样的:

C:\Users\(username)\AppData\Local\Programs\Python\Python(version)

COPY(不删除)python.exe和重命名为py.exe和执行:

py filename.py


Answer 10:

只需运行以下命令:

C:>python .\file_name.py

假设文件名相同的文件夹内,和Python已经被添加到环境变量。



文章来源: How to execute Python scripts in Windows?