在powershell中运行特定的python版本

时间:2017-11-06 15:58:04

标签: python powershell

这可能只是Windows Powershell中的语法错误,但我无法运行具有特定python版本的python脚本(我有两个安装)。

我有一个批处理文件,其中以下命令有效:

"C:\Program Files\QGIS 2.18\bin\python.exe" myscript.py

但是如果我在包含python脚本的文件夹中打开PowerShell,我会收到错误:

At line:1 char:45
+ ... C:\Program Files\QGIS 2.18\bin\python.exe" myscript.py
+                                                ~~~~~~~~~~~~~~~~~~~~~~~~~~
Unexpected token 'myscript.py' in expression or statement.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : UnexpectedToken

我也试过没有双引号,单引号,并指定了python脚本的路径:

"C:\Program Files\QGIS 2.18\bin\python.exe" C:\mydata\myscript.py

两部分都有引号:

"C:\Program Files\QGIS 2.18\bin\python.exe" "C:\mydata\myscript.py"

但有类似的错误。

编写此命令的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

使用& Call operator or . Dot sourcing operator如下(选择一个):

  • . "C:\Program Files\QGIS 2.18\bin\python.exe" "C:\mydata\myscript.py"
  • & "C:\Program Files\QGIS 2.18\bin\python.exe" "C:\mydata\myscript.py"
  • . "C:\Program Files\QGIS 2.18\bin\python.exe" "myscript.py"
  • & "C:\Program Files\QGIS 2.18\bin\python.exe" "myscript.py"

<强>解释

在Powershell中,行{}处的"a string"表示与Write-Output "a string"相同(请参阅Write-Output cmdlet documentation中的示例1 )。因此,在第一个例子中"C:\Program Files\QGIS 2.18\bin\python.exe" myscript.py

  • "C:\Program Files\QGIS 2.18\bin\python.exe" = string 类型的第一个标记
    • =&GT; powershell解释器期望整行代表位置Write-Output的{​​{1}}的位置参数,即PS对象的数组(0)和
  • PSObject[] =意外的令牌。