python - 从 PowerShell 语法错误运行 Python 脚本

标签 python windows powershell

以下是问题的摘要以及有关操作系统、系统环境变量的相关信息。

启动 PowerShell 后,屏幕显示

Windows Powershell  
Copyright © 2009 Microsoft Corporation  
PS C:\Users>

我的输入是:

Python 

输出是:

Python 2.7.4 default Apr 8 2013 19:54:46) [MSC v.1500 32 bit (Intel)] on win32"  
Type “help” ……etc.

我的下一个输入是:

Python CleanupStops.py 

输出是:

File <stdin>,line 1  
Python CleanupStops.py  
              ^ "  
Syntax Error: invalid syntax"   

脚本位于系统环境变量中设置的目录 pyscripts 中,如下所示。

C:\Python27;C:\Python27\Tools\Scripts\pyscripts;C:\Python27\Lib\site-packages; 

请注意,我的操作系统是 64 位 SPI,而 Python 2.7.4 是 32 位 Intel。

操作系统:

  • Windows 7 专业版 64 位 SP1
    安装日期:4/3/2015 10:13:51 PM

已安装 .NET Frameworks:

  • v4.5 全版
  • v4.5 客户端
  • v3.5 SP1
  • v3.0 SP2
  • v2.0 SP2

最佳答案

您的第一个 Python 语句以交互模式启动了 Python 解释器。如果你想从那里运行一个 Python 脚本,你需要这样的东西(假设该文件在当前目录中):

>>> <b>import os</b>
>>> <b>os.system('.\\CleanupStops.py')</b>

键入 exit() 并按 Enter 退出交互式解释器。

当您想直接从 PowerShell 或 CMD 运行 Python 脚本时,使用语句 python CleanupStops.py:

PS C:\> <b>python C:\Python27\Tools\Scripts\pyscripts\CleanupStops.py</b>

PS C:\> <b>Set-Location C:\Python27\Tools\Scripts\pyscripts</b>
PS C:\Python27\Tools\Scripts\pyscripts> <b>python CleanupStops.py</b>

如果您在安装期间将 .py 文件与 Python 解释器相关联,您甚至应该能够直接运行 Python 脚本(无需明确指定解释器),正如@tdelaney 在您的评论中指出的那样问题:

PS C:\> <b>CleanupStops.py</b>

但是请注意,后者(在没有解释器和路径的情况下调用脚本)仅在包含脚本的目录列在 $env:Path 环境变量(以及扩展名 .py 列在 $env:PATHEXT 变量中,正如@eryksun 在评论中指出的那样)。如果目录未在 $env:Path 中列出,则需要使用绝对路径或相对路径调用脚本。

PS C:\Python27\Tools\Scripts\pyscripts> <b>.\CleanupStops.py</b>

如果安装程序没有正确准备环境,您可以自己轻松完成。只需从提升的 PowerShell 提示符中运行以下 4 条语句:

[environment]::SetEnvironmentVariable('Path', "$env:Path;C:\python27", 'Machine')
[environment]::SetEnvironmentVariable('PATHEXT', "$env:PATHEXT;.py", 'Machine')
cmd /c 'assoc .py=Python.File'
cmd /c 'ftype Python.File="C:\python27\python.exe" "%1" %*'

新设置将在您下次启动 PowerShell(或 CMD)时生效。

关于python - 从 PowerShell 语法错误运行 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34254649/

相关文章:

javascript - 值错误: Invalid Literal error when passing integer value from form to Javascript function

python - 仅当连续 nan 超过 x 时才进行掩码

json - 为什么我生成的JSON的 “\\”太多?

multithreading - Powershell 同时唤醒多个媒体驱动器

azure - 通过 Azure powershell 仅获取企业应用程序

powershell - 使用 Plink 将 .NET 构建文件夹的内容复制到 Ubuntu 服务器

python - 将每个实例属性的 __str__ 用于类的 __str__

python - 默认的 django 元素不显示 django 模板

c - 如何从合法的未知值类型中提取标准注册表值类型?

windows - 如何使用 WinSxS list 重定向到旧版本的 DLL?