קריאה לפונקציה שכתובה בפייתון מ - C#

שלוות נפש

משתמש פעיל
היי בוקר טוב
יש לי פונקציה שרשומה בפייתון ב- VSCODE ואני צריכה לקרוא לה מ C# שרשום בויזואל סטודיו.
ראיתי בקישור הזה: https://stackoverflow.com/questions...d-from-a-python-script-in-c/13241517#13241517
דרך לעשות את זה אבל לא הבנתי מאיפה הוא אמור להכיר לי את מה שרשמתי ב VSCODE -- אין שם שום ניתוב...
או שאני בעצם רושמת את הפייתון בשורה הזאת--
var pySrc =
@"def CalcAdd(Numb1, Numb2):
return Numb1 + Numb2";
ואז בעצם הכל רשום לי באותו קובץ??
ואם יש לי בפייתון כמה פונקציות שכל אחת משתמשת בשנייה -- איך אני רושמת את זה?
אשמח אם מישהו הבין ויוכל להסביר לי-- תודה רבה!!!
 

גזעי

משתמש מקצוען
הנדסת תוכנה
D I G I T A L
א. לקרוא את הקובץ עם File.ReadAllText()
ב.
אפשר לייצא את המודול, ואז לקרוא לו באמצעות
python -m
או לקרוא לפונקציה ספציפית בצורה הזו
python -c "import myfile; myfile.myfunction()"
System.Diagnostics.Proccess.Start("python.exe", new string[] {"-c", "import myfile;myfile.myfunction()"})

בשיטה השניה לא צריך IronPython.

לגבי איך מייצאים למודול, פשוט מוסיפים קובץ ריק בשם __init__.py לתיקיה שנמצא בא הקובץ.

נ.ב. לא בדקתי שהקוד אכן רץ תקין, אבל זה הרעיון
 

שלוות נפש

משתמש פעיל
יש מישהו שהתנסה בזה??
כי מביא לי שגיאה על השורה: engine.Execute(pySrc, scope);
IronPython.Runtime.Exceptions.ImportException: 'No module named __future__'
ואין לי מושג בכלל מה השורה הזו מייצגת כך שאין לי איך לדעת איך לפתור את זה... :(
 

שלוות נפש

משתמש פעיל
ב.
אפשר לייצא את המודול, ואז לקרוא לו באמצעות
python -m
או לקרוא לפונקציה ספציפית בצורה הזו
python -c "import myfile; myfile.myfunction()"
System.Diagnostics.Proccess.Start("python.exe", new string[] {"-c", "import myfile;myfile.myfunction()"})

בשיטה השניה לא צריך IronPython.

לגבי איך מייצאים למודול, פשוט מוסיפים קובץ ריק בשם __init__.py לתיקיה שנמצא בא הקובץ.
לגבי השיטה הזאת לא הבנתי את הקריאה לפונקציה -- זה התשובה השנייה בקישור שם
או שזה הראשונה בצורה אחרת...:unsure:
או בכלל דרך אחרת..
 

גזעי

משתמש מקצוען
הנדסת תוכנה
D I G I T A L
לגבי השיטה הזאת לא הבנתי את הקריאה לפונקציה -- זה התשובה השנייה בקישור שם
או שזה הראשונה בצורה אחרת...:unsure:
או בכלל דרך אחרת..
זאת התשובה השלישית,
הרעיון הוא פשוט להריץ את הקוד פייתון באמצעות המפרש של פייתון, את התוצאה להדפיס מתוך הקוד פייתון ל-stdout (הפלט של הקונסול בברירת מחדל, כמו למשל ע"י השימוש בפונקציית print), ולהשתמש בזה בקוד C#.

אפשר לייצא את זה בתור פונקציה עם main ולקרוא לה.
אפשר בתור מודול, ולקרוא לקוד בתוך
קוד:
__init__.py
ואז לקרוא למודול באמצעות python -m mypythonfile
 

שלוות נפש

משתמש פעיל
זאת התשובה השלישית,
הרעיון הוא פשוט להריץ את הקוד פייתון באמצעות המפרש של פייתון, את התוצאה להדפיס מתוך הקוד פייתון ל-stdout (הפלט של הקונסול בברירת מחדל, כמו למשל ע"י השימוש בפונקציית print), ולהשתמש בזה בקוד C#.

אפשר לייצא את זה בתור פונקציה עם main ולקרוא לה.
אפשר בתור מודול, ולקרוא לקוד בתוך
קוד:
__init__.py
ואז לקרוא למודול באמצעות python -m mypythonfile
אוקי
אז אפשר הסבר יותר מפורט על השורות שרשמת:
python -c "import myfile; myfile.myfunction()"
System.Diagnostics.Proccess.Start("python.exe", new string[] {"-c", "import myfile;myfile.myfunction()"})
אני רושמת אותם בתוך פונקציה בC# / מתחת ל- USING -- לא כל כך הבנתי איפה
ומה בעצם מייצג לי את הניתוב לקובץ...
בקיצור אם אפשר להסבר יותר מפורט :sne: ממש אשמח- תודה רבה רבה!!
 

גזעי

משתמש מקצוען
הנדסת תוכנה
D I G I T A L
אוקי
אז אפשר הסבר יותר מפורט על השורות שרשמת:
python -c "import myfile; myfile.myfunction()"
System.Diagnostics.Proccess.Start("python.exe", new string[] {"-c", "import myfile;myfile.myfunction()"})
אני רושמת אותם בתוך פונקציה בC# / מתחת ל- USING -- לא כל כך הבנתי איפה
ומה בעצם מייצג לי את הניתוב לקובץ...
בקיצור אם אפשר להסבר יותר מפורט :sne: ממש אשמח- תודה רבה רבה!!
אם אני מבין נכון, חסרה פה הבנה של איך עובד פייתון, ולהסביר את זה יכול להיות ארוך.
אז אני אלך על הדרך הקצרה -
בווינדוס - לפתוח cmd.exe
להריץ python --help
יפתח רשימה מלאה של אפשרויות ההרצה של פייתון, לקרוא הכל.

לאחמ"כ https://www.learnpython.org/
לעבור שם על החלק שנקרא learn the basics (ללמוד את הבסיס בלע"ז)

אחרי זה הכל אמור להיות פשוט יותר, בסה"כ הצעתי משהו מאוד הגיוני בשביל להריץ את פייתון מתוך C#, אבל צריך להבין איך עובד C#, ואיך עובד פייתון.
אני מאמין שעם C# אין בעיה.
 

ביגר

משתמש סופר מקצוען
הנדסת תוכנה
D I G I T A L
אפשר ליצור מהפונקציה בפייתון שרות עם flask ואז לקרא לו בrest מהc#
 

גזעי

משתמש מקצוען
הנדסת תוכנה
D I G I T A L
אפשר ליצור מהפונקציה בפייתון שרות עם flask ואז לקרא לו בrest מהc#
בהנחה שהקובץ פייתון מגיע עם התוכנה ללקוח, חבל לעשות את העיקוף הזה בשביל להריץ פונקציה בפייתון. זה ידרוש שרת וכתיבת סרביס בFLASK, ולהוסיף קריאות רשת מהקוד C#.
 

שלוות נפש

משתמש פעיל
אני רואה שהדרך הראשונה כן עובדת לי רק תלוי מה נשלח.
אם אני משתמשת במה שהם רשמו:
// host python and execute script
var engine = IronPython.Hosting.Python.CreateEngine();
var scope = engine.CreateScope();
engine.Execute(pySrc, scope);

// get function and dynamically invoke
var calcAdd = scope.GetVariable("CalcAdd");
var result = calcAdd(34, 8); // returns 42 (Int32)
return result;
מביא לי כתוצאה Int32
ניסיתי לשלוח סטרינג ולקבל אותו אז מביא לי string ולא את הערך בעצמו.
יש הסבר לזה??
 

שלוות נפש

משתמש פעיל
היי
חוזרת שוב לנושא:sne:..
הפונקציה בפייתון זה תכנית שמתמללת - לוקח לה כמה שניות לעבוד.
ושאני מפעילה תקוד זה מחזיר לי סטרינג ריק, הוא לא מחכה שתתמלל.
(בלי לשלב את הפייתון עם C# הפייתון עובד תקין)
אשמח לעזרה
תודה רבה !!!
 

שלוות נפש

משתמש פעיל
אני רואה שהC# לא מזהה את GOOGLE.CLOUD (שנמצא בפייתון)הוא נותן לי את השגיאה הבאה:
1645967783006.png
 

גזעי

משתמש מקצוען
הנדסת תוכנה
D I G I T A L
אני רואה שהC# לא מזהה את GOOGLE.CLOUD (שנמצא בפייתון)הוא נותן לי את השגיאה הבאה:
צפה בקובץ המצורף 1074010
אם אני מבין נכון, אז iron python משתמש בסביבת הרצה של פייתון עצמאית שלו, האפשרויות הן:
- לחפש את הדרך להגדיר לו באיזה אינטרפרטר של פייתון להשתמש, ולכוון אותו לזה שמותקן בו google.cloud
- לקרוא בתחילת הקוד לpip בצורה הזו:
Python:
import pip
pip.main(['install', 'google.cloud'])
# rest of the code...

בגירסאות חדשות של pip צריך לעשות import pip._internal
 

שלוות נפש

משתמש פעיל
- לקרוא בתחילת הקוד לpip בצורה הזו:
Python:
import pip
pip.main(['install', 'google.cloud'])
# rest of the code...

בגירסאות חדשות של pip צריך לעשות import pip._internal
זה בעצם מתקין לי את GOOLE.CLOUD על קטע הקוד בפייתון??
כי אם כן הוא מותקן הקוד בפייתון עובד תקין כל הבעיה שC#לא מזהה את זה
 
נערך לאחרונה ב:

גזעי

משתמש מקצוען
הנדסת תוכנה
D I G I T A L
זה בעצם מתקין לי את GOOLE.CLOUD על קטע הקוד בפייתון??
כי אם כן הוא מותקן הקוד בפייתון עובד תקין כל הבעיה שC#לא מזהה את זה
על זה הגבתי:
אם אני מבין נכון, אז iron python משתמש בסביבת הרצה של פייתון עצמאית שלו,
ולכן הצעתי מה שהצעתי.
וב C# התקנת?
תנסי את זה:
Install-Package Google.Cloud.Speech.V1 -Version 2.7.0

ב Package Manager
השגיאה בפייתון.
 

אולי מעניין אותך גם...

הפרק היומי

הפרק היומי! כל ערב פרק תהילים חדש. הצטרפו אלינו לקריאת תהילים משותפת!


תהילים פרק קד

א בָּרְכִי נַפְשִׁי אֶת יי יי אֱלֹהַי גָּדַלְתָּ מְּאֹד הוֹד וְהָדָר לָבָשְׁתָּ:ב עֹטֶה אוֹר כַּשַּׂלְמָה נוֹטֶה שָׁמַיִם כַּיְרִיעָה:ג הַמְקָרֶה בַמַּיִם עֲלִיּוֹתָיו הַשָּׂם עָבִים רְכוּבוֹ הַמְהַלֵּךְ עַל כַּנְפֵי רוּחַ:ד עֹשֶׂה מַלְאָכָיו רוּחוֹת מְשָׁרְתָיו אֵשׁ לֹהֵט:ה יָסַד אֶרֶץ עַל מְכוֹנֶיהָ בַּל תִּמּוֹט עוֹלָם וָעֶד:ו תְּהוֹם כַּלְּבוּשׁ כִּסִּיתוֹ עַל הָרִים יַעַמְדוּ מָיִם:ז מִן גַּעֲרָתְךָ יְנוּסוּן מִן קוֹל רַעַמְךָ יֵחָפֵזוּן:ח יַעֲלוּ הָרִים יֵרְדוּ בְקָעוֹת אֶל מְקוֹם זֶה יָסַדְתָּ לָהֶם:ט גְּבוּל שַׂמְתָּ בַּל יַעֲבֹרוּן בַּל יְשׁוּבוּן לְכַסּוֹת הָאָרֶץ:י הַמְשַׁלֵּחַ מַעְיָנִים בַּנְּחָלִים בֵּין הָרִים יְהַלֵּכוּן:יא יַשְׁקוּ כָּל חַיְתוֹ שָׂדָי יִשְׁבְּרוּ פְרָאִים צְמָאָם:יב עֲלֵיהֶם עוֹף הַשָּׁמַיִם יִשְׁכּוֹן מִבֵּין עֳפָאיִם יִתְּנוּ קוֹל:יג מַשְׁקֶה הָרִים מֵעֲלִיּוֹתָיו מִפְּרִי מַעֲשֶׂיךָ תִּשְׂבַּע הָאָרֶץ:יד מַצְמִיחַ חָצִיר לַבְּהֵמָה וְעֵשֶׂב לַעֲבֹדַת הָאָדָם לְהוֹצִיא לֶחֶם מִן הָאָרֶץ:טו וְיַיִן יְשַׂמַּח לְבַב אֱנוֹשׁ לְהַצְהִיל פָּנִים מִשָּׁמֶן וְלֶחֶם לְבַב אֱנוֹשׁ יִסְעָד:טז יִשְׂבְּעוּ עֲצֵי יי אַרְזֵי לְבָנוֹן אֲשֶׁר נָטָע:יז אֲשֶׁר שָׁם צִפֳּרִים יְקַנֵּנוּ חֲסִידָה בְּרוֹשִׁים בֵּיתָהּ:יח הָרִים הַגְּבֹהִים לַיְּעֵלִים סְלָעִים מַחְסֶה לַשְׁפַנִּים:יט עָשָׂה יָרֵחַ לְמוֹעֲדִים שֶׁמֶשׁ יָדַע מְבוֹאוֹ:כ תָּשֶׁת חֹשֶׁךְ וִיהִי לָיְלָה בּוֹ תִרְמֹשׂ כָּל חַיְתוֹ יָעַר:כא הַכְּפִירִים שֹׁאֲגִים לַטָּרֶף וּלְבַקֵּשׁ מֵאֵל אָכְלָם:כב תִּזְרַח הַשֶּׁמֶשׁ יֵאָסֵפוּן וְאֶל מְעוֹנֹתָם יִרְבָּצוּן:כג יֵצֵא אָדָם לְפָעֳלוֹ וְלַעֲבֹדָתוֹ עֲדֵי עָרֶב:כד מָה רַבּוּ מַעֲשֶׂיךָ יי כֻּלָּם בְּחָכְמָה עָשִׂיתָ מָלְאָה הָאָרֶץ קִנְיָנֶךָ:כה זֶה הַיָּם גָּדוֹל וּרְחַב יָדָיִם שָׁם רֶמֶשׂ וְאֵין מִסְפָּר חַיּוֹת קְטַנּוֹת עִם גְּדֹלוֹת:כו שָׁם אֳנִיּוֹת יְהַלֵּכוּן לִוְיָתָן זֶה יָצַרְתָּ לְשַׂחֶק בּוֹ:כז כֻּלָּם אֵלֶיךָ יְשַׂבֵּרוּן לָתֵת אָכְלָם בְּעִתּוֹ:כח תִּתֵּן לָהֶם יִלְקֹטוּן תִּפְתַּח יָדְךָ יִשְׂבְּעוּן טוֹב:כט תַּסְתִּיר פָּנֶיךָ יִבָּהֵלוּן תֹּסֵף רוּחָם יִגְוָעוּן וְאֶל עֲפָרָם יְשׁוּבוּן:ל תְּשַׁלַּח רוּחֲךָ יִבָּרֵאוּן וּתְחַדֵּשׁ פְּנֵי אֲדָמָה:לא יְהִי כְבוֹד יי לְעוֹלָם יִשְׂמַח יי בְּמַעֲשָׂיו:לב הַמַּבִּיט לָאָרֶץ וַתִּרְעָד יִגַּע בֶּהָרִים וְיֶעֱשָׁנוּ:לג אָשִׁירָה לַיי בְּחַיָּי אֲזַמְּרָה לֵאלֹהַי בְּעוֹדִי:לד יֶעֱרַב עָלָיו שִׂיחִי אָנֹכִי אֶשְׂמַח בַּיהוָה:לה יִתַּמּוּ חַטָּאִים מִן הָאָרֶץ וּרְשָׁעִים עוֹד אֵינָם בָּרְכִי נַפְשִׁי אֶת יי הַלְלוּיָהּ:
נקרא  5  פעמים

אתגר AI

רגעים מכריעים בחיים • אתגר 116

לוח מודעות

למעלה