Supercharge Your C# Code: Integrating Python using Python.NET

Поделиться
HTML-код

Комментарии • 88

  • @jordanrobinson1633
    @jordanrobinson1633 Месяц назад +3

    For those having issues, inside your py.GIL block add this
    dynamic sys = Py.Import("sys");
    sys.path.append ("your folder spec "); /| the folder where your python scripts are.

  • @stefanosantimone5886
    @stefanosantimone5886 Месяц назад +2

    To change the path for the scripts, before importing the script, just add:
    dynamic sys = Py.Import("sys");
    sys.path.append(Path.Combine(scriptPath));
    Great presentation. Thank you!

  • @JaimeHaddad
    @JaimeHaddad 5 месяцев назад +1

    Great Video Nick. Didn't know about this library! Thanks for sharing this one with us!! 👏

  • @adnartmadmartm8718
    @adnartmadmartm8718 10 месяцев назад +3

    This was well done. Covered a couple of basic cases and showcased the use quite clearly.

  • @advaitharmy
    @advaitharmy 4 месяца назад +4

    Thanks Nick for the video.
    Anyone struggling with no module found error for the .py file? First add the .py file in the current csproject path. Then add the line of code System.Environment.SetEnvironmentVariable("PYTHONPATH", "my_project.py") in your .cs file.
    Even though I added this path manually in PYTHONPATH system variable it was not working for me and I had to include path of the .py path using the above code to make it work.

    • @LaFeev
      @LaFeev 2 месяца назад +1

      I followed Nick's code, and encountered the "no module found" error when executing Py.Import("mypythonscript"). Your method might work if the full file path to the python module is included (as written, it did nothing for me), but I found a simpler method if following Nick's code is to just ensure the python script is copied to the output directory. In visual studio, click the .py file and under properties > Copy to Output Directory set to "Copy if newer". Finally, make sure you do NOT include .py in the string argument of the Py.Import call. Nick mentions it isn't needed but in fact it will error out if included.

    • @songperformer_NET
      @songperformer_NET Месяц назад

      @@LaFeev cheers Dude

  • @LeoDevSpace
    @LeoDevSpace 10 месяцев назад

    Thanks Nick, cool video that quickly explains how to work

  • @SashkoBljad
    @SashkoBljad 4 месяца назад

    can I step into python code when I debug c# code with visual studio?

  • @tanujdeshmukh
    @tanujdeshmukh День назад

    Question: if i want to use python script for data processing and then create the domain objects in c# what would be the best strategy to do it?

  • @anjureddy5469
    @anjureddy5469 5 месяцев назад

    Hello, hope you are doing well, you have explained clearly how to use or embed python in c# it saved me a lot of time.
    If possible, can you make a video on how to use .pyd( python dynamic library) file in c# using pythonnet?

  • @ricardopucca
    @ricardopucca 29 дней назад +1

    I had problems with 'No module named' on debug! And I solve this installing pywin32:
    pip install pywin32

  • @bandasanthosh
    @bandasanthosh 4 месяца назад

    So without installing Python we cannot run python scripts? if that is the case then this can be run from cmd as well using C#. Is my assumption correct?

  • @kktech04
    @kktech04 10 месяцев назад

    Awesome video !!!!! Very well explained !

  • @funnyshorts.0000
    @funnyshorts.0000 4 месяца назад

    Informative !

  •  7 месяцев назад +1

    Thank you for the video, it would be great to see IronPython too, hopefully you can do a video about it in the near future. :)

  • @ajaymanagaon
    @ajaymanagaon 4 месяца назад +1

    I have 312 Python and this code is not working. .Net framework 4.7.2

  • @mohamed-hassan-
    @mohamed-hassan- 10 месяцев назад

    Thanks for this good python snippet, good video

  • @manjunath1847
    @manjunath1847 28 дней назад

    How to set the python virtual environment before calling the script from C#?

  • @SilverSurfer77
    @SilverSurfer77 9 месяцев назад +2

    Thank you for this! I got your example to work, but when I tried to roll my own python script, which imports numpy, I get this delightful error message: No module named 'numpy'
    Any suggestions to get numpy and other nonstandard libraries recognized?

    • @nickproudprogrammer
      @nickproudprogrammer  9 месяцев назад +1

      Glad it helped! Did you install numpy via pip? If so, when doing so, were you in the same directory as your script?

    • @SilverSurfer77
      @SilverSurfer77 9 месяцев назад

      @@nickproudprogrammer yes and yes. PIP said it was already installed. So I thought this had to do with the multiple version of python I had installed and a path variable conflict...so I removed all versions and did a fresh install...and now python doesn't work at all. I mean Idle won't even open. Ah 47 steps backward and 0 steps forward, such is the life a programmer. What a time to be alive! Hopefully I can figure this out.

    • @manishpachauri9801
      @manishpachauri9801 5 дней назад

      ​@@nickproudprogrammer hey can help me when I use pythonet in a MVC application and call action method except first time py.gil() hangs for infinite how to handle this

  • @satinderjeetsingh4715
    @satinderjeetsingh4715 7 месяцев назад +1

    i need to run the pyhton script as test cases how i can do that please help its urgent , like right now I have create class in new test project and trying to run that script but lot of issue like dll not found and lot other , I am not sure if it should be the same directory or what just waiting for your reply hope something helpful

    • @nickproudprogrammer
      @nickproudprogrammer  6 месяцев назад

      I've found that having the script in the same directory as your dlls usually fixes this

  • @user-rj8ot2zb3d
    @user-rj8ot2zb3d 4 месяца назад +1

    Great tutorial.
    I tried this but when I run the code I get Python.Runtime.BadPythonDLLException error. this occurs on the Python.Initialize line. Do I need to add a path to system variable? Using visual studio 2022 c# in a win forms application. any help is appreciated. thanks

    • @user-rj8ot2zb3d
      @user-rj8ot2zb3d 4 месяца назад

      I have a c# project in visual studio and I am using the pythonnet package
      When I call pythonengine.initialize I am getting an badpythondllexception.
      I am using pythonnet 3.0.3
      per docs on the pythonnet I need to set the runtime.pythonDll variable
      from the control panel I have added the system variable runtime.PythonDll variable and pointed it to the python311.dll file
      But I am still getting the exception when i execute the pythonengine.initialize.
      how can I resolve thins?

  • @mikemuller6207
    @mikemuller6207 Месяц назад

    I can't believe it ... I finally got this to work lol, not Nick's fault, my ignorance ... which has recently decreased every so slightly haha

  • @user-vn3sz4et6f
    @user-vn3sz4et6f Месяц назад

    At this time, has anyone used Py.Import to import a .py program file using its path?

  • @khalifafg1930
    @khalifafg1930 10 месяцев назад

    how can i use dll data or library from c# in my python script ?

    • @nickproudprogrammer
      @nickproudprogrammer  10 месяцев назад

      Are you talking about using a python library in the script from C# or a .NET DLL from Python?

  • @ImanManan97
    @ImanManan97 4 месяца назад

    Hi, I have a question. I am using visual studio 2017. I have install Python support in the visual studio installer. I have install python 3.7 in my path. Now I having trouble to include the .py file type inside my c# folder. When i try to Add "New Item" it does not show in my options of file type. And when I try to create new Py Project, it does not seem to appear in my solution path. Is there any solution to this?

    • @ImanManan97
      @ImanManan97 4 месяца назад

      I have also include the pythonnet 3.0.3

  • @toddrothman2765
    @toddrothman2765 8 месяцев назад

    do you freelance? I need help working on building an api similar to how this video is introducing.

    • @nickproudprogrammer
      @nickproudprogrammer  8 месяцев назад

      Sure. Drop me an email and we can set up a call. contact@nickproud.com

  • @user-pe7ku5oj8v
    @user-pe7ku5oj8v 10 месяцев назад +1

    what if my python file is not on same folder with c# file?

    • @Heyhey_1792
      @Heyhey_1792 8 месяцев назад

      You’d have to append the C# file’s location to the path with sys.path.append(C# file location)

  • @priyanshuaggarwal9037
    @priyanshuaggarwal9037 4 месяца назад +1

    This code is not running for py version 3.12 and .net 8.0 with Python.NET version 3.0.3, as it is showing a python runtime exception because the py script is not being imported

    • @funnyshorts.0000
      @funnyshorts.0000 4 месяца назад +1

      Go to properties of that python file and set its Copy to output directory to Copy always

    • @neofox2526
      @neofox2526 17 дней назад

      @@funnyshorts.0000 Thanks so much that instantly worked lol

    • @MuhammadNafees-tj9bw
      @MuhammadNafees-tj9bw 13 дней назад +1

      @@neofox2526 u are welcomed i faced same issue and I thought to tell other early about others

  • @mohdwasif7
    @mohdwasif7 10 месяцев назад +3

    Hi Nick, it's a nice video.
    I am trying to replicate the same behavior as you taught in the video but I am getting an exception : No module named 'Hello'. Actually I have created a python file 'Hello.py' in the same directory with exact same code as you have shown in the video but I am getting this strange exception:(

    • @nickproudprogrammer
      @nickproudprogrammer  10 месяцев назад

      Python definitely installed? If so, have you added Python to your PATH variable? (Assuming windows)

    • @mohdwasif7
      @mohdwasif7 10 месяцев назад +1

      @@nickproudprogrammer
      Yes, it's already there. I am using python for other projects and it is working fine.

    • @mistik31laggerfeed13
      @mistik31laggerfeed13 10 месяцев назад

      @@mohdwasif7 i stuck with same problem, but i found solve. I just put this python files to root path of Python and folder "site-packages". Yes, its awful, but i can't find anything more.

    • @marcuslowry9873
      @marcuslowry9873 9 месяцев назад +9

      I also ran into this problem, so I asked chat gpt (lol) and it provided a solution that worked for me. The critical part is appending the project directory where your c# and python code is to the sys.path variable as shown below.
      using Python.Runtime;
      static void RunScript(string scriptName)
      {
      if (string.IsNullOrEmpty(scriptName))
      {
      throw new ArgumentNullException("The script name is null or empty.");
      }
      Runtime.PythonDLL = @"C:\Users\...\AppData\Local\Programs\Python\Python312\python312.dll";
      PythonEngine.Initialize();
      using (Py.GIL())
      {
      dynamic sys = Py.Import("sys");
      sys.path.append(@"C:\Dev\ConsoleApp");
      var pythonScript = Py.Import(scriptName);
      var result = pythonScript.InvokeMethod("say_hello");
      }
      }
      RunScript("pythonScript");

    • @cinoemre55
      @cinoemre55 5 месяцев назад

      thanks for the solution@@marcuslowry9873

  • @MrTheOctavius
    @MrTheOctavius 10 месяцев назад +5

    I've followed your exact same steps but get the exception "Python.Runtime.PythonException: 'No module named 'mypythonscript' ". Am I missing something?

    • @elmono9472
      @elmono9472 10 месяцев назад +9

      on solution explorer, right click on your python file - > Properties - >copy to Output Directory to "Copy Always"
      That way when you build solution your python file will be included

    • @teresaatencio3310
      @teresaatencio3310 10 месяцев назад

      @@elmono9472 you saved my life, thank you very much

    • @MrTheOctavius
      @MrTheOctavius 9 месяцев назад

      Thank you for responding. I've done that and it still throws the same error..@@elmono9472

    • @danielhustwayte2766
      @danielhustwayte2766 6 месяцев назад

      Hero@@elmono9472

  • @iandalrymple7255
    @iandalrymple7255 8 месяцев назад +1

    I am trying to use this for a library project. It just hangs at the Py.Import step. The DLL containing the calling code and the py script are in the same directory.

    • @nickproudprogrammer
      @nickproudprogrammer  8 месяцев назад

      Any compile errors in your DLL (if you wrote it and get check to see if it builds?)
      How big is the DLL?

    • @iandalrymple7255
      @iandalrymple7255 8 месяцев назад

      @@nickproudprogrammer yeah its a first party DLL. There are no compilation errors. I was invoking the method contained in the DLL via XUNIT so that was an issue. I ended up creating a console application to test the invocation and that seemed to work. Not sure whats the deal with the XUNIT issue and not sure if I will take the time to look into it but if I do I will be sure to post the solution here. Thanks for getting back to me and thank you for the video.

  • @jaaferbennasr7483
    @jaaferbennasr7483 10 месяцев назад

    cool video

  • @geoffhirst5338
    @geoffhirst5338 4 месяца назад

    Py.Import doesn't seem to work this way any more, I have used it successfully for bringing in modules like numpy and faiss but an actual script just doesn't seem to work. I am on 3.0.3 of Pythonnet and it just throws the 'No Module named 'my script name' I have also tried the remedies for this shown below so if anyone has this working, tell us your voodoo.

    • @funnyshorts.0000
      @funnyshorts.0000 4 месяца назад

      Go to properties of that python file and set its Copy to output directory to Copy always

    • @geoffhirst5338
      @geoffhirst5338 4 месяца назад +3

      Yep, done that. Makes no difference.
      However, what does make the difference is inside your py.GIL block add this
      dynamic sys = Py.Import("sys");
      sys.path.append("your folder spec "); // the folder where your python scripts are.

    • @funnyshorts.0000
      @funnyshorts.0000 4 месяца назад

      @@geoffhirst5338 i did this now
      i can access python file

    • @lorenasanchez6642
      @lorenasanchez6642 4 месяца назад

      @@geoffhirst5338 goddamnnnnnnnnnn thank you so much

    • @jordanrobinson1633
      @jordanrobinson1633 Месяц назад

      @@geoffhirst5338Cheers mate - this worked.

  • @dilemmafixe9340
    @dilemmafixe9340 5 месяцев назад

    WARNIIIIIIIIIIIIIIIIIIIIIING!!!!!!!!!!!!!!
    u wiil have problem with file .py program dont find it . send file to file version of python . if windows say "u cant do this!" copy data from file and send it to new file with name python and u version . It still working

  • @MirAnupamHossainAkib--
    @MirAnupamHossainAkib-- 10 месяцев назад

    hoy na bhai

  • @mrtsknn
    @mrtsknn Месяц назад

    just one simple implementation 14minute talk .d it's not necessary i think

  • @josephizang6187
    @josephizang6187 2 месяца назад

    Nice video. You are assuming that everyone uses Windows. What about Linux and MacOSX? after all, in a modern .NET world, all platforms should be covered. I am trying this on MacOSX to see if this works.

    • @jordanrobinson1633
      @jordanrobinson1633 Месяц назад

      It is the same on MacOSX. The difference will be in that for your DLL, it will be the path to the Python dylib.
      As well, you’ll need to add inside your py.GIL block the following:
      dynamic sys = Py.Import("sys");
      sys.path.append ("your folder spec "); // the folder where your python scripts are.