หลักการเรียกใช้โมดูลในโฟลเลอร์เดียวกัน
ในการ import เรียกใช้โมดูลในโฟลเลอร์เดียวกัน สามารถทำได้โดยตามตัวอย่างนี้ครับ
hello.py
print("Hello")
เราสร้างตัวโมดูลสำหรับเรียกใช้กันในโฟลเลอร์เดียวกันแล้ว สามารถเรียกใช้ได้เลยโดยใช้การ
import ชื่อไฟล์โมดูล
โดยชื่อไฟล์โมดูลไม่ต้องมี .py ครับ ตัวอย่างเช่น
show.py
import helloผลลัพธ์
Hello
หากเราต้องการให้มีการเรียกใช้คำสั่งที่อยู่ในโมดูล เราต้องสร้างฟังก์ชันขึ้นมารองรับด้วยครับ
เมื่อเรียกใช้งาน โดยอ้างอิงจากฟังก์ชันที่อยู่ใน cal.py
test.py
from cal import plue,plueto #เรียกใช้ฟังก์ชันหรือ class จากโมดูล cal
print(plue(5))
print(plueto(5,10))
ผลลัพธ์
10
15
หากเราต้องการทราบคำสั่งที่อยู่ในโมดูล cal ที่เราเขียนขึ้นมา สามารถใช้คำสั่ง __dict__.keys() ได้ดังนี้ครับ
list.py
import cal
print(cal.__dict__.keys())
ผลลัพธ์
dict_keys(['__builtins__', 'plueto', '__name__', '__doc__', 'plue', '__spec__', '__file__', '__loader__', '__cached__', '__package__'])
ในกรณีที่มีคำสั่งในโมดูลที่เราเขียน หากเราต้องการสร้าง main ขึ้นมา (เหมือนภาษา C) โดยจะเรียกใช้งานได้เฉพาะโค้ดนี้เท่านั้นครับ เราสามารถใช้ __name__ == '__main__' ได้ตามนี้ครับ
caltwo.py
if __name__ == '__main__':
print("5")
เมื่อเรา import โมดูลเข้ามา
show2.py
import caltwo
ผลลัพธ์
จะพบว่า ไม่มีอะไรขึ้นมาเพราะ show2.py ไม่ใช่โปรแกรมหลักครับ
อ่านรายละเอียดเพิ่มเติมเรื่อง ฟังก์ชันใน Python สร้างฟังก์ชันไม่ระบุชื่อด้วย lambda ใน Python และ อ๊อบเจ็กและคลาสพื้นฐานในภาษา Python
ทำไฟล์ติดตั้งโมดูลใน Python
หลังจากที่ผมได้พาผู้อ่านไปเรียกใช้โมดูลในโฟลเลอร์เดียวกันมาแล้ว ต่อไปเราจะทำให้สามารถเรียกใช้งานโมดูลได้โดยที่ไม่ต้องเป็นต้องอยู่โฟลเลอร์เดียวกันกับไฟล์โมดูล เหมือนเราเรียกใช้โมดูล lxml , pyside ครับ โดยมีตัวอย่างต่อไปนี้
from distutils.core import setup #ระบบติดตั้งโมดูล
setup(name='Distutils', #ชื่อโมดูล
version='1.0', #เวชั่นของโมดูล
description='Python Distribution Utilities', #รายละเอียดโมดูล
author='Greg Ward', #ชื่อผู้สร้างโมดูล
author_email='[email protected]', #อีเมลล์ติดต่อผู้สร้างโมดูล
url='https://www.python.org/sigs/distutils-sig/', #หน้าเว็บโมดูล
packages=['distutils'], #packages ที่ถูกรวมด้วย โดย packages คือโฟลเลอร์ที่ใช้เก็บไฟล์โมดูลของเราครับ
)
โดยรายละเอียดใน setup() ไม่จำเป็นต้องกำหนดทุกอันก็ได้ครับ
ต่อไปผมจะพอทุกท่านลงมือทำโมดูลกันครับ โดยผมนำไฟล์ cal.py มาทำเป็นโมดูล โดยมีโค้ดดังต่อไปนี้ครับ
cal.py
สร้างโฟลเลอร์ใหม่ แล้วเก็บไฟล์ cal.py ไว้ในโฟลเลอร์ packages ที่ผมสร้างขึ้นมาเพิ่มชื่อว่า cal
รายละเอียดระบบไฟล์ของโมดูล
และผมสร้างไฟล์ __init__.py เป็นไฟล์สำหรับกำหนดค่าการเรียกใช้คำสั่งในโมดูล
__init__.py
from cal import * #หมายถึงเรียกใช้โมดูลจากไฟล์ cal.py ที่อยู่ในโฟลเลอร์เดียวกัน โดยดึงคำสั่งทุกคำสั่งมา
เสร็จแล้วทำไฟล์ setup.py ซึ่งเป็นไฟล์ระบบล์ติดตั้งโมดูล โดยไว้ในโฟลเลอร์หลัก
โดยโค้ดไฟล์ setup.py มีดังนี้ครับ
setup.py
from distutils.core import setupแล้วเปิดคอมมานด์ไลน์ทำการติดตั้งโมดูลที่ผมทำขึ้นมาเอง
setup(
name='cal',
version='0.0.1',
author='Wannaphong',
packages=['cal'],
url='https://python3.wannaphong.com',
license='MIT', #license
description='Test',
include_package_data=True,
)
python setup.py install
เสร็จแล้วลองรันใช้งานใน Python IDE ดูครับ
>>> from cal import cal
>>> print(cal.plue(5))
10
อ่านรายละเอียดของการทำไฟล์ติดตั้งโมดูลใน Python ได้ที่ https://docs.python.org/3/distutils/setupscript.html
หากผู้อ่านต้องการเผยแพร่โมดูลที่ทำให้ทุกคนบนโลกสามารถติดตั้งโมดูลของท่านได้จาก PyPI สามารถเข้าไปอ่านรายละเอียดเพิ่มเติมได้ที่ https://packaging.python.org/en/latest/index.html
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ :D
0 ความคิดเห็น:
แสดงความคิดเห็น
แสดงความคิดเห็นได้ครับ :)