สวัสดีผู้อ่านทุกท่านครับ หากผู้อ่านเป็นนักพัฒนาที่ใช้ .NET Framework ในการพัฒนาโปรแกรมไม่ว่าจะเป็นภาษา C#, F# และ visual basic เป็นต้น แต่คุณกลับเจอปัญหา คือ ไม่สามารถหาโมดูลใน .NET Framework มาทดแทนได้ ตัวอย่างเช่น PyThaiNLP หรือ คุณต้องการเขียนโค้ดใช้งานทั้ง Python และ .NET Framework คุณสามารถทำได้โดยใช้ pythonnet
pythonnet เป็นเครื่องมือสำหรับใช้เชื่อม Python กับ .NET Framework
ก่อนอื่นให้ทำการติดตั้ง Python.NET ลงใน Python ก่อน ด้วยคำสั่ง
pip install pythonnet
การใช้งาน Python ใน .NET Framewok
คำเตือน !!! คุณต้องตั้งค่า compiler ให้ตรงกับรุ่น Python ที่ใช้ หรือ ใช้ Python ให้ตรงกับเวชั่นที่ต้องการ เช่น หากใช้ Python 64bit คุณต้องตั้งค่า compiler ของ visual studio ให้เป็น 64 bit ด้วย
ก่อนอื่น ให้ตั้งค่า Path ให้กับ Python ให้เรียบร้อย โดยจะต้องมีข้อมูลใน Path ต่อไปนี้
- PATH - มีที่ตั้งโฟลเดอร์ Python อยู่ด้วย
- PYTHONHOME - ที่ตั้งโฟลเดอร์ Python
- PYTHONPATH - ที่ตั้งโฟลเดอร์ Lib ของ Python
ใน visual studio ให้คลิกขวาที่ References ของโปรเจคที่ทำ > Add References...
กด Browse...
เข้าไปที่ ที่ตั้ง Python/Lib/site-packages เลือกไฟล์ Python.Runtime.dll แล้วกด Add ติ๊กถูกแล้วกด OK
จะได้ Python.Runtime เพิ่มเข้ามา
เสร็จแล้วมาลองโค้ดกัน
ลองเขียน C# เรียกใช้งานระบบตัดคำของ PyThaiNLP (สามารถติดตั้งได้ด้วยคำสั่ง pip install pythainlp )
static void Main(string[] args)ผลลัพธ์
{
using (Py.GIL())
{
dynamic pythainlp = Py.Import("pythainlp");
dynamic a1 = pythainlp.tokenize.word_tokenize("สวัสดีครับ","newmm");
Console.WriteLine(a1);
Console.ReadKey();
}
}
['สวัสดี', 'ครับ']จะเห็นได้ว่า
- ฟังก์ชัน Python ต้องเรียกใช้งานภายใน using (Py.GIL()) {/* Your code here */} เท่านั้น
- คำสั่ง Py.Import("โมดูล"); เป็นคำสั่งสำหรับเรียกใช้งานโมดูล โดยเก็บ dynamic แล้วเรียกใช้งานได้คล้าย Python ได้เลย
- และวัตถุของ Python ทั้งหมดถูกเก็บเป็น dynamic
การใช้งาน .NET Framewok ใน Python
สามารถใช้งานได้ง่าย ๆ ตามตัวอย่างนี้import clrผลลัพธ์
clr.AddReference("System") # เรียกใช้งาน assembly System
from System import Math # เรียกใช้งาน Math ใน System คล้าย System.Math
print(Math.PI) # แสดง System.Math.PI
3.141592653589793อ่านเอกสารได้ที่่ https://github.com/pythonnet/pythonnet/
เขียนโดย นาย วรรณพงษ์ ภัททิยไพบูลย์
นักศึกษาชั้นปีที่ 1
สาขาวิทยาการคอมพิวเตอร์และสารสนเทศ คณะวิทยาศาสตร์ประยุกต์และวิศวกรรมศาสตร์
มหาวิทยาลัยขอนแก่น วิทยาเขตหนองคาย
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ
Could not load file or assembly 'Python.Runtime, Version=2.3.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format.
ตอบลบคอมไพลล์ไม่ผาน แจ้งมาดังข้อความข้างต้น คืออะไรครับ