Windows 10 ve Python 3.8 için C # (VS2019) için Python.NET nasıl kurulur?

Aug 25 2020

Python.NET'in resmi web sitesinde, Python 3.8'i desteklediğini söylüyor. Harika. Şimdi mevcut python 3.8 modüllerimi C # (.NET framework v4.7.2) ile geliştirilmiş bir uygulamadan çağırmakla ilgileniyorum.

DÜZENLEMELER:

Hiçbir kurulum talimatları yakın C # gelen aramalar için Python.NET yazarları tarafından verilmektedir beri, verilen talimatları takip buraya . Miniconda3 ve python 32bit (ikincisi projem için gerekli) kullandığımı ve bu yüzden aşağıdakileri yaptığımı unutmayın:

  1. VScode'dan, "C: \ ProgramData \ Miniconda3 \ envs \ py38_32" ortamı altında pip installgerekli tüm python paketlerinin yanı sıra ( numpyburada örnek amacıyla kullanalım) pythonnet'i kurdum.

  2. C # 'da ortam yollarını ayarlayın (VS2019'da):

    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. Projemdeki "py38_32 \ Lib \ site-packages" klasöründen Python.Runtime.dll dosyasına başvurdu ve ekledi using Python.Runtime;

  2. Numpy'yi içe aktarmaya çalıştı:

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

Orada, "Python.Runtime.PythonException: 'ImportError" ile numpy içe aktarmada başarısız oldu. Ayrıca "Python sürümü:" \ bin \ Debug \ MyProject.exe'den Python3.8 "yazıyor ... hata ayıklama klasörümde python arıyor gibi görünüyor, yukarıda belirtilen yolda değil ... belki .. Ve aynı ortamı kullanarak VScode'dan numpy'i içe aktarmak tamamen iyi çalışıyor.

Burada neler olup bittiğini bilen var mı?

Yanıtlar

LOST Aug 26 2020 at 01:45

Python.NET'i kurmanın resmi yolu Python paket yöneticisidir pip.

Windows'ta bu olur python.exe -m pip install pythonnet. Bu, Python.Runtime.dllPython dağıtımınızda bir yer yaratacaktır . Sadece projenizden referans alın ve mimarilerin eşleşmesini sağlayın.

Desteklenmeyen bir alternatif, resmi olmayan yapımı kullanmak ve seçtiğiniz Runtime.PythonDLLkonuma ayarlamaktır python38.dll(başka bir NuGet paketi kullanarak çalışma zamanında bir tane bulabilirsiniz: HangiPython ).

bricx Aug 26 2020 at 21:26

Belirtildiği gibi burada , Anaconda (ve Miniconda) değil Python.NET ile çalışır yapmak. Tek yapmam gereken, ihtiyacım olan tüm paketi içeren yeni bir Python kopyasını yeniden yüklemek ve aşağıdaki kod parçasını yeni yollarla değiştirmekti:

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