Comment installer Python.NET pour C # (VS2019) sur Windows 10 et pour Python 3.8?

Aug 25 2020

Sur le site officiel de Python.NET, il indique qu'il prend en charge Python 3.8. Génial. Maintenant, je suis intéressé à appeler mes modules python 3.8 existants à partir d'une application développée en C # (.NET Framework v4.7.2).

MODIFIER:

Puisque presque aucune instruction d'installation n'est donnée par les auteurs de Python.NET pour les appels à partir de C #, j'ai suivi les instructions données ici . Notez que j'utilise miniconda3 et python 32bit (ce dernier étant requis pour mon projet), j'ai donc fait ce qui suit:

  1. A partir de VScode, j'ai installé pythonnet avec pip installainsi que tous les packages python requis (utilisons numpyici pour les besoins de l'exemple) sous l'environnement "C: \ ProgramData \ Miniconda3 \ envs \ py38_32".

  2. Définissez les chemins d'environnement en C # (dans VS2019):

    string pythonPath1 = @"C:\ProgramData\Miniconda3\envs\py38_32";
    string pythonPath2 = @"C:\ProgramData\Miniconda3\envs\py38_32\Lib\site-packages";
    Environment.SetEnvironmentVariable("PATH", pythonPath1, EnvironmentVariableTarget.Process);
    Environment.SetEnvironmentVariable("PYTHONHOME", pythonPath1, EnvironmentVariableTarget.Process);
    Environment.SetEnvironmentVariable("PYTHONPATH", pythonPath2, EnvironmentVariableTarget.Process);
  1. Référencé le Python.Runtime.dll du dossier "py38_32 \ Lib \ site-packages" dans mon projet et ajouté using Python.Runtime;

  2. J'ai essayé d'importer numpy:

    using (Py.GIL())
    {
        dynamic np = Py.Import("numpy"); //fail on this line with ImportError
    }
    

Là, il a échoué sur l'importation numpy, avec "Python.Runtime.PythonException: 'ImportError". Il dit également "La version Python est: Python3.8 de" \ bin \ Debug \ MyProject.exe "... il semble qu'il recherche python dans mon dossier de débogage, et non dans le chemin mentionné ci-dessus ... Et l'importation de numpy à partir de VScode en utilisant le même environnement fonctionne parfaitement.

Quelqu'un a-t-il une idée de ce qui se passe ici?

Réponses

LOST Aug 26 2020 at 01:45

Le moyen officiel d'installer Python.NET est via le gestionnaire de packages Python pip.

Sur Windows, ce serait python.exe -m pip install pythonnet. Cela créera Python.Runtime.dllquelque part dans votre distribution Python. Faites simplement référence à votre projet et assurez-vous que les architectures correspondent.

Une alternative non prise en charge consiste à utiliser ma version non officielle et à la définir Runtime.PythonDLLà l'emplacement python38.dllde votre choix (vous pouvez en trouver une au moment de l'exécution en utilisant un autre package NuGet : WhichPython ).

bricx Aug 26 2020 at 21:26

Comme mentionné ici , Anaconda (et Miniconda) ne fonctionne pas avec Python.NET. Tout ce que j'avais à faire était de réinstaller une nouvelle copie de Python avec tout le package dont j'avais besoin et de remplacer le morceau de code suivant par les nouveaux chemins:

string pythonPath1 = @"C:\Python";
string pythonPath2 = @"C:\Python\Lib\site-packages";