【问题标题】:Cannot run a python file from a windows ps1 file无法从 Windows ps1 文件运行 python 文件
【发布时间】:2021-02-14 02:13:03
【问题描述】:

我有一个 ps1 文件(名为 NPScript.ps1),其中包含一个简单的函数,我在 PowerShell(运行 Windows 10)中用作 cmdlet。

function add-np() {
        Set-Location C:\Users\emers\Desktop\Code\Projects
        python.exe C:\Users\emers\Desktop\Code\mybin\NPPythonScript.py
    }

当我在 PowerShell 中调用 add-np 时,第一部分,即 Set-Location 部分可以正常工作。我有一个 python 脚本(NPPythonScript.py),当调用此函数并且该部分(见上文)不工作时,我也想执行它,它当前不输出任何内容。 python 文件当前应该只打印 "Hello!"。当我运行这个时:

python.exe C:\Users\emers\Desktop\Code\mybin\NPPythonScript.py

或者这个:

python C:\Users\emers\Desktop\Code\mybin\NPPythonScript.py

在 PowerShell 中,它工作得很好并且可以正常打印。我试过把完整的路径放到 python.exe 没有运气。我尝试了一条 shebang 线,尽管据我所知这确实适用于 linux/OS 上下文。也许我没有正确实施......?我在这里看到了其他一些答案,表明如果 python.exe 的位置在我的路径中,我应该可以工作。由于我在 PowerShell 中运行的行很好,并且我的函数适用于其中的其他内容,所以我无法弄清楚,我已经为我的具体情况寻找了几个小时的答案。

我正在使用 add-np cmdlet 调用该函数,该 cmdlet 对于函数的第一部分(Set-Location 部分)工作得很好。

在评论者 VirtualScooter 的建议下,我做了一个简短的中间测试,看看该行是否在函数之外运行,所以我重新组织如下:

python.exe C:\Users\emers\Desktop\Code\mybin\NPPythonScript.py

function add-np() {
    Set-Location C:\Users\emers\Desktop\Code\Projects
}  

当我在 PowerShell 中运行文件时,这确实按预期运行,并且我的函数在调用时仍然可以将我移动到项目文件夹中。

【问题讨论】:

  • 请注意,执行包含函数定义的.ps1 文件仅定义该函数,而不实际调用它。
  • 我认为您可能需要考虑一个中间测试:在 .ps1 文件中的函数定义前面添加带有 python.exe 运行脚本的行,以检查是否直接运行你的脚本有效。

标签: python windows powershell


【解决方案1】:

我必须相信,唯一的错误是我没有正确地重新启动我的终端(尽管我发誓我已经这样做了)。因为这个新代码在调用函数时可以正常运行,而我在语法上基本上没有做任何不同的事情。

function New-project {
    Set-Location C:\Users\emers\Desktop\Code\Projects
    python.exe C:\Users\emers\Desktop\Code\mybin\NPPythonScript.py
}

【讨论】:

    猜你喜欢
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    相关资源
    最近更新 更多