บทความนี้ขอนำเสนอวิธีช่วยให้สามารถใช้งานโมดูลที่พัฒนาให้เฉพาะ Python 2.X สามารถใช้งานได้ แม้ว่า อาจใช้ไม่ได้ทุกโมดูล Python 2.X ทั้งหมด แต่ช่วยให้สามารถใช้งานโมดูลที่ยังสามารถทำงานได้
ข้อแนะนำ
ควรเลือกโมดูลที่เป็น Pure Python (เขียนด้วยภาษา Python 100%) และสามารถติดตั้งด้วย pip ได้
ให้ทำการอัพเดต future ด้วยคำสั่ง
$ pip install future -U
ใน future ประกอบไปด้วยเครื่องมือหลายตัวสำหรับพัฒนาโค้ดใช้งานได้ทั้ง Python 2 และ Python 3
ในที่นี้ขอเลือก
past
ในคำสั่ง autotranslate
ซึ่งเป็นเครื่องมือสำหรับแปลงโค้ดโมดูล Python 2 มาใช้งานใน Python 3 แบบอัตโนมัติการใช้งาน past ในคำสั่ง autotranslate
from past import autotranslate
autotranslate(['ชื่อโมดูลที่ต้องการ'])
บทความนี้ขอเลือกโมดูล codegrapher เป็นโมดูลสำหรับสร้าง graphs code จากโค้ดไฟล์ Python ช่วยให้สามารถเห็นองค์ประกอบการทำงานของไฟล์งาน Python ได้ รองรับเฉพาะ Python 2 เท่านั้น และ ใช้ MIT License
หน้าโมดูล https://pypi.python.org/pypi/codegrapher/
ก่อนใช้งานให้ทำการติดดั้ง graphviz แล้วตั้งค่า path ให้เรียบร้อย
ในการติดตั้งด้วย pip ต้องเติม
--no-compile
ลงไปด้วยติดตั้งด้วยคำสั่ง :
pip install codegrapher --no-compile
การนำ autotranslate มาใช้งานจริง
ก่อนอื่น ให้ทำการสร้างไฟล์โค้ดที่ต้องการให้ codegrapher สร้าง grapher จากโค้ดในไฟล์ที่กำหนด
hi.py
class a:
def hello():
return 'hello'
a1 = a
print(a1.hello())
ต่อไปถึงเวลาเรียกใช้งานโมดูล codegrapher ใน Python 3
จากโค้ดใน Python 2
from codegrapher.parser import FileObject
file_object = FileObject('hi.py') # ชื่อไฟล์ โดยต้องอยู่ในโฟลเดอร์เดียวกัน
file_object.visit()
from codegrapher.graph import FunctionGrapher
graph = FunctionGrapher()
graph.add_file_to_graph(file_object)
graph.name = 'name'
graph.format = 'png'
graph.render() # ทำการส่งออก
เป็นโค้ดรันใน Python 3
from past import autotranslate
autotranslate(['codegrapher.graph','codegrapher.parser']) # เลือกโมดูลที่ต้องการใช้งาน
from codegrapher.parser import FileObject
file_object = FileObject('hi.py') # ชื่อไฟล์ โดยต้องอยู่ในโฟลเดอร์เดียวกัน
file_object.visit()
from codegrapher.graph import FunctionGrapher
graph = FunctionGrapher()
graph.add_file_to_graph(file_object)
graph.name = 'name'
graph.format = 'png'
graph.render() # ทำการส่งออก
ผลลัพธ์
จะได้ไฟล์ name.png แสดงว่าโมดูลนี้ทำงานอยู่บน Python 3 แล้ว :)
อ่านเอกสารได้ที่ http://python-future.org/
เขียนโดย นาย วรรณพงษ์ ภัททิยไพบูลย์ ที่ https://python3.wannaphong.com/
0 ความคิดเห็น:
แสดงความคิดเห็น
แสดงความคิดเห็นได้ครับ :)