diff --git a/src/runtime/Python.Runtime.csproj b/src/runtime/Python.Runtime.csproj index 5a8c35f49..587408edd 100644 --- a/src/runtime/Python.Runtime.csproj +++ b/src/runtime/Python.Runtime.csproj @@ -14,6 +14,7 @@ python-clear.png https://raw.githubusercontent.com/pythonnet/pythonnet/master/src/console/python-clear.ico https://pythonnet.github.io/ + README.md true Python and CLR (.NET and Mono) cross-platform language interop @@ -37,6 +38,7 @@ + diff --git a/src/runtime/README.md b/src/runtime/README.md new file mode 100644 index 000000000..ab75280ed --- /dev/null +++ b/src/runtime/README.md @@ -0,0 +1,75 @@ +`pythonnet` is a package that gives .NET programmers ability to +integrate Python engine and use Python libraries. + +## Embedding Python in .NET + +- You must set `Runtime.PythonDLL` property or `PYTHONNET_PYDLL` environment variable, + otherwise you will receive `BadPythonDllException` + (internal, derived from `MissingMethodException`) upon calling `Initialize`. + Typical values are `python38.dll` (Windows), `libpython3.8.dylib` (Mac), + `libpython3.8.so` (most other *nix). Full path may be required. +- All calls to Python should be inside a + `using (Py.GIL()) {/* Your code here */}` block. +- Import python modules using `dynamic mod = Py.Import("mod")`, then + you can call functions as normal, eg `mod.func(args)`. + You can also access Python objects via `PyObject` and dervied types + instead of using `dynamic`. +- Use `mod.func(args, Py.kw("keywordargname", keywordargvalue))` or + `mod.func(args, keywordargname: keywordargvalue)` to apply keyword + arguments. +- Mathematical operations involving python and literal/managed types + must have the python object first, eg. `np.pi * 2` works, + `2 * np.pi` doesn't. + +## Example + +```csharp +using var _ = Py.GIL(); + +dynamic np = Py.Import("numpy"); +Console.WriteLine(np.cos(np.pi * 2)); + +dynamic sin = np.sin; +Console.WriteLine(sin(5)); + +double c = (double)(np.cos(5) + sin(5)); +Console.WriteLine(c); + +dynamic a = np.array(new List { 1, 2, 3 }); +Console.WriteLine(a.dtype); + +dynamic b = np.array(new List { 6, 5, 4 }, dtype: np.int32); +Console.WriteLine(b.dtype); + +Console.WriteLine(a * b); +Console.ReadKey(); +``` + +Output: + +``` +1.0 +-0.958924274663 +-0.6752620892 +float64 +int32 +[ 6. 10. 12.] +``` + + + +## Resources + +Information on installation, FAQ, troubleshooting, debugging, and +projects using pythonnet can be found in the Wiki: + +https://github.com/pythonnet/pythonnet/wiki + +Mailing list + https://mail.python.org/mailman/listinfo/pythondotnet +Chat + https://gitter.im/pythonnet/pythonnet + +### .NET Foundation + +This project is supported by the [.NET Foundation](https://dotnetfoundation.org). pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy