Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Windows中执行Python脚本?_Python_Windows_Scripting_Command Line_File Association - Fatal编程技术网

如何在Windows中执行Python脚本?

如何在Windows中执行Python脚本?,python,windows,scripting,command-line,file-association,Python,Windows,Scripting,Command Line,File Association,我有一个简单的脚本blah.py(使用Python 2): 如果我通过以下方式执行脚本: python c:/..../blah.py argument blah.py argument 它打印参数,但如果我通过以下方式执行脚本: python c:/..../blah.py argument blah.py argument 发生错误: 索引器 所以参数不会传递给脚本 路径中的python.exe。路径中也包含blah.py的文件夹。 python.exe是执行*.py文件的默认程序

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

如果我通过以下方式执行脚本:

python c:/..../blah.py argument
blah.py argument
它打印参数,但如果我通过以下方式执行脚本:

python c:/..../blah.py argument
blah.py argument
发生错误:

索引器

所以参数不会传递给脚本

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


有什么问题吗?

您可以从任何映射执行python.exe吗? 如果没有,请检查PATH环境中python.exe的值是否正确

你和blah.py在同一个目录下吗。通过发出命令->编辑blah.py并检查是否可以打开此文件来检查这一点

编辑:

那样的话,你不能。(python arg意味着您使用一些参数调用python.exe,python假定这些参数是您要运行的脚本的文件名)

您可以在路径图中创建bat文件whit行并运行.bat文件

示例:
在其中一个路径贴图中创建blah.py.bat 编辑文件并放入行

python C:\Somedir\blah.py

现在可以从AnyWare运行blah.py,因为运行bat文件时不需要放置.bat扩展名

您应该将处理python文件的默认应用程序设置为python.exe

右键单击*.py文件,选择“打开方式”对话框。在其中选择“python.exe”并选中“始终将此程序用于此文件类型”(类似于此)


然后,您的python文件将始终使用python.exe运行。当您执行脚本而不在前面键入“python”时,您需要了解有关Windows如何调用程序的两件事。首先是找出Windows认为它是什么类型的文件:

C:\>assoc .py .py=Python.File 关键在于:

"C:\Python26\python26.exe" "%1" %*
很可能之前,
%*
缺失。同样,设置

 HKEY_CLASSES_ROOT\py_auto_file\shell\open\command
相同的值。看

HKEY\U CLASSES\u ROOT\Applications\python.exe\shell\open\command
注册表路径可能会有所不同,请使用
python26.exe
python.exe
或注册表中已有的路径


HKEY\u CLASSES\u ROOT\py\u auto\u file\shell\open\command
此外,如果您希望能够运行python脚本,而无需在文件名末尾键入
.py
(或
.pyw
),则需要将
.py
(或
.py;.pyw
)添加到PATHEXT环境变量的扩展名列表中

在Windows 7中:

右键单击计算机
左键单击属性
左键单击高级系统设置
左键单击高级选项卡
左键单击环境变量…
在“系统变量”下向下滚动,直到看到PATHEXT
左键单击PATHEXT以突出显示它
左键单击编辑…
编辑“变量值”,使其包含
;。PY
(结束键将跳至结束)
左键单击“确定”
左键单击“确定”
左键单击“确定”

注意#1:命令提示符窗口将不会看到关闭和重新打开的更改(不包括更改)

注意#2:
.py
.pyw
扩展之间的区别在于前者在运行时会打开命令提示符,后者则不会

在我的计算机上,我添加了
;。PY;。PYW作为最后一个(最低优先级)扩展,因此PathText的“before”和“after”值为:

之前:
.COM;。EXE;。蝙蝠;。CMD;。VBS;。VBE;。JS;。JSE;。WSF;。WSH;。MSC

.COM;之后;。EXE;。蝙蝠;。CMD;。VBS;。VBE;。JS;。JSE;。WSF;。WSH;。理学硕士;。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脚本

你可以安装。它用于启动.py、.pyw、.pyc、.pyo文件,并支持多种Python安装:

T\:> blah.py argument
如果PATHEXT环境变量中有.py、.pyw,则可以在不指定.py扩展名的情况下运行Python脚本:

T:\> blah argument
它增加了对shebang(
#!
标题行)的支持,以便在Windows上选择所需的Python版本(如果安装了多个版本)。您可以使用*nix兼容语法
#/usr/bin/env python

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

T:\> py -3 blah.py argument

它还可以解决您的
sys.argv
问题,这是一个副作用。

我遇到了同样的问题,但是在需要为Windows用户打包代码的情况下(来自Linux)。 我的软件包包含许多带有命令行选项的脚本

我需要将这些脚本安装到Windows用户计算机上的适当位置,以便他们可以从命令行调用它们。 由于该包应该是用户友好的,因此要求我的用户更改注册表以运行这些脚本是不可能的

我遇到了一个解决方案,Continuum的人员使用它来编写Anaconda包附带的Python脚本——查看Anaconda/scripts目录以获取示例

对于Python脚本
test
,创建两个文件:一个
test.bat
和一个
test script.py

test.bat
如下所示(在
Anaconda\Scripts
call
python.exe
中的
.bat
文件具有一个相对路径,我根据自己的目的进行了调整):

test script.py
是实际的Python脚本:

import sys
print sys.argv
如果将这两个文件保留在本地目录中,则可以通过执行以下操作通过
.bat
文件调用Python脚本

test.bat hello world
['C:\\...\\test-scripy.py', 'hello', 'world']
如果将这两个文件复制到
路径上的某个位置(例如
Anaconda\Scripts
),则甚至可以通过省略
.bat
后缀来调用脚本

test hello world
['C:\\...Anaconda\\Scripts\\test-scripy.py', 'hello', 'world']

免责声明:我不知道发生了什么,也不知道它是如何工作的,因此希望能有任何解释。

找到了一个非常有用的答案:如何在cmd中运行不同的python版本?

我建议使用PythonLauncherforWindows实用程序,该实用程序不久前引入了Python3.3。您还可以直接从作者的网站手动下载并安装它,以便与早期版本的Python2和Python3一起使用

不管
import sys
print sys.argv
test.bat hello world
['C:\\...\\test-scripy.py', 'hello', 'world']
test hello world
['C:\\...Anaconda\\Scripts\\test-scripy.py', 'hello', 'world']
C:>python .\file_name.py