Skip to content

SQLBear/snek

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PowerShell wrapper around Python for .NET to invoke Python from PowerShell

Install snek

Install-Module snek

Requirements

  • Python v2.7, v3.5, v3.6, or v3.7 (defaults to python 3.7)

Functions

  • Use-Python
  • Invoke-Python
  • Import-PythonRuntime
  • Import-PythonPackage
  • Install-PythonPackage
  • Uninstall-PythonPackage
  • Use-PythonScope
  • Set-PythonVariable

Invoke Python Code (v3.7)

Use-Python { 
    Invoke-Python -Code "print('hi!')" 
}
    
hi!

Invoke Python Code (v2.7)

PS > Use-Python { 
    Invoke-Python -Code "print('hi!')" 
} -Version v2.7
    
hi!

Returning A Value from Python to PowerShell

Due to the use of dynamic the type must be cast to the expected type so you need to specify the -ReturnType parameter to do so.

Use-Python {
    Invoke-Python "'Hello'" -ReturnType ([String])
}

Imports the numpy Python module and does some math

Access methods of modules directly!

Use-Python {
    $np = Import-PythonPackage "numpy"
    [float]$np.cos($np.pi * 2)

    [float]$np.sin(5)
    [float]($np.cos(5) + $np.sin(5))
} -Version v3.7

Output

1
-0.9589243
-0.6752621

Manage pip

Format is Install-PythonPackage <package>

Install-PythonPackage requests

Or similarly:

Uninstall-PythonPackage requests

Using Scopes

You can use Python scopes to string together multiple Invoke-Python calls or to pass in variables from PowerShell.

Use-Python {
    Use-PythonScope {
        Invoke-Python -Code "import sys" 
        Invoke-Python -Code "sys.version" -ReturnType ([string]) 
    }
}

Passing a .NET Object to Python

class Person {
    [string]$FirstName
    [string]$LastName
}

Use-Python {
    Use-PythonScope {
        $Person = [Person]::new()
        $Person.FirstName = "Adam"
        $Person.LastName = "Driscoll"
        Set-PythonVariable -Name "person" -Value $Person

        Invoke-Python -Code "person.FirstName + ' ' + person.LastName" -ReturnType ([string])
    }
}

About

PowerShell wrapper around Python for .NET to invoke Python from PowerShell

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PowerShell 100.0%