为 python -m 定义 powershell 函数

为 python -m 定义 powershell 函数

我正在尝试做一些我认为微不足道的事情。
我只是想声明一个函数

function mds {
python -m "blabla" $args
}

但它在 Powershell 下不起作用。
我收到此错误:

mds : The term 'python -m os:String' is not recognized as the name of a cmdlet, function, script file, or operable program. Ch
eck the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1

据我了解,Powershell 将整个命令python -m "asdfadsf"作为命令,但是为什么呢?我该如何解决这个问题?

答案1

PowerShell 不知道该 Python 代码是什么,因此出现错误。此外,还有几个保留字、变量(自动和默认)。注意点...

$args

... 就是其中之一,因此,您不能在自己的代码中使用它。

$args PowerShell 中的自动变量 '$args' 是 PowerShell 中的自动变量,包含传递给脚本的未声明参数的数组

# iterating through the arguments
# and performing an operation on each
$args | ForEach-Object { $_*2 }
"Argument count: $($args.Count)"
"First Argument : $($args[0])"
"Second Argument : $($args[1])"
"Last Argument : $($args[-1])"
$args.GetType() # get the type of the object

此外,尽管有 Python,但这也不是在 PowerShell 中调用外部命令的方法。关于如何从 PowerShell 脚本/函数调用外部命令,有很多文档齐全的资源。例如:

PowerShell:运行可执行文件

解决 PowerShell 中的外部命令行问题

在 Powershell 中运行外部命令的 5 大技巧

正确执行 PowerShell 中的外部命令

使用 Windows PowerShell 运行旧的命令行工具(及其最奇怪的参数)

另请参阅重定向

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_redirection?view=powershell-6

https://stackoverflow.com/questions/19220933/powershell-pipe-external-command-output-to-another-external-command

引用细节

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_quoting_rules https://trevorsullivan.net/2016/07/20/powershell-quoting

最后...

Python 的 PowerShell 脚本指南 – 传递命令行参数

关于自动变量

总而言之,你最终会得到这样的结果......

$PythonArgs = @('-m', 
'pip',
'install', 
'--upgrade'
'pip')

function mds {
    & 'python.exe' $PythonArgs
}

mds

# Results
<#
Requirement already up-to-date: pip in d:\scripts\python\pycharmprojects\test\venv\lib\site-packages (19.3.1)
#>

相关内容