include README.md into NuGet package · pythonnet/pythonnet@58df35b

1+

`pythonnet` is a package that gives .NET programmers ability to

2+

integrate Python engine and use Python libraries.

3+4+

## Embedding Python in .NET

5+6+

- You must set `Runtime.PythonDLL` property or `PYTHONNET_PYDLL` environment variable,

7+

otherwise you will receive `BadPythonDllException`

8+

(internal, derived from `MissingMethodException`) upon calling `Initialize`.

9+

Typical values are `python38.dll` (Windows), `libpython3.8.dylib` (Mac),

10+

`libpython3.8.so` (most other *nix). Full path may be required.

11+

- All calls to Python should be inside a

12+

`using (Py.GIL()) {/* Your code here */}` block.

13+

- Import python modules using `dynamic mod = Py.Import("mod")`, then

14+

you can call functions as normal, eg `mod.func(args)`.

15+

You can also access Python objects via `PyObject` and dervied types

16+

instead of using `dynamic`.

17+

- Use `mod.func(args, Py.kw("keywordargname", keywordargvalue))` or

18+

`mod.func(args, keywordargname: keywordargvalue)` to apply keyword

19+

arguments.

20+

- Mathematical operations involving python and literal/managed types

21+

must have the python object first, eg. `np.pi * 2` works,

22+

`2 * np.pi` doesn't.

23+24+

## Example

25+26+

```csharp

27+

using var _ = Py.GIL();

28+29+

dynamic np = Py.Import("numpy");

30+

Console.WriteLine(np.cos(np.pi * 2));

31+32+

dynamic sin = np.sin;

33+

Console.WriteLine(sin(5));

34+35+

double c = (double)(np.cos(5) + sin(5));

36+

Console.WriteLine(c);

37+38+

dynamic a = np.array(new List<float> { 1, 2, 3 });

39+

Console.WriteLine(a.dtype);

40+41+

dynamic b = np.array(new List<float> { 6, 5, 4 }, dtype: np.int32);

42+

Console.WriteLine(b.dtype);

43+44+

Console.WriteLine(a * b);

45+

Console.ReadKey();

46+

```

47+48+

Output:

49+50+

```

51+

1.0

52+

-0.958924274663

53+

-0.6752620892

54+

float64

55+

int32

56+

[ 6. 10. 12.]

57+

```

58+59+60+61+

## Resources

62+63+

Information on installation, FAQ, troubleshooting, debugging, and

64+

projects using pythonnet can be found in the Wiki:

65+66+

https://github.com/pythonnet/pythonnet/wiki

67+68+

Mailing list

69+

https://mail.python.org/mailman/listinfo/pythondotnet

70+

Chat

71+

https://gitter.im/pythonnet/pythonnet

72+73+

### .NET Foundation

74+75+

This project is supported by the [.NET Foundation](https://dotnetfoundation.org).