การเผยแพร่ด้วย twine
อัปโหลดไปยัง PyPI
การเผยแพร่ด้วย twine เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน
ขั้นตอนสุดท้าย
คุณสร้างอาร์ติแฟกต์ไว้ใน dist/ แล้ว ขั้นตอนสุดท้ายคือการอัปโหลดอาร์ติแฟกต์เหล่านั้นไปยัง PyPI เพื่อให้ผู้คนทั่วโลกสามารถ pip install แพ็กเกจของคุณได้ เครื่องมือมาตรฐานสำหรับงานนี้คือทไวน์
ทไวน์อัปโหลดอย่างปลอดภัยผ่านการเชื่อมต่อแบบเข้ารหัส และตรวจสอบอาร์ติแฟกต์ก่อนส่ง
การติดตั้งทไวน์
ติดตั้งด้วย pip install twine ทไวน์เป็นเครื่องมือขนาดเล็กที่มุ่งเน้นงานเฉพาะอย่าง หน้าที่ของมันคือการตรวจสอบและอัปโหลดไฟล์ใน dist/ เท่านั้น ไม่ได้ใช้สร้างสิ่งใด
เริ่มจาก TestPyPI
มีพื้นที่ทดลองแยกต่างหากชื่อ TestPyPI สำหรับซ้อมอัปโหลด โปรดเผยแพร่ไปที่นั่นก่อน เพื่อค้นหาปัญหาโดยไม่ทำให้ดัชนีจริงปะปน ชื่อและรุ่นบน TestPyPI แยกเป็นอิสระจาก PyPI
อัปโหลดด้วย twine upload --repository testpypi dist/*
ตรวจสอบก่อนอัปโหลด
twine check dist/* จะตรวจสอบว่าข้อมูลเมทาดาทาและคำอธิบายแบบยาวของคุณจะแสดงผลบน PyPI ได้อย่างถูกต้องหรือไม่ โปรดเรียกใช้ทุกครั้ง เพราะหากคำอธิบายใน README มีปัญหา คำอธิบายนั้นอาจแสดงเป็นข้อความธรรมดาบนหน้าโครงการของคุณ
files = ['mytool-0.1.0.tar.gz', 'mytool-0.1.0-py3-none-any.whl']
for f in files:
status = 'PASSED' if f.endswith(('.gz', '.whl')) else 'SKIP'
print('check', f, '->', status)ใช้โทเค็นส่วนติดต่อโปรแกรมประยุกต์ ไม่ใช่รหัสผ่าน
ยืนยันตัวตนด้วยโทเค็นส่วนติดต่อโปรแกรมประยุกต์จากบัญชี PyPI ของคุณ ไม่ใช่รหัสผ่าน ให้ใช้ __token__ เป็นชื่อผู้ใช้ และใช้โทเค็นที่ขึ้นต้นด้วย pypi- เป็นรหัสผ่าน คุณสามารถกำหนดขอบเขตของโทเค็นให้ใช้ได้กับโครงการเดียว และเพิกถอนได้ทุกเมื่อ
username = '__token__'
token = 'pypi-AgEIcHl...'
print('Username:', username)
print('Token starts with:', token[:5])
print('Never commit the token to git')การจัดเก็บข้อมูลรับรอง
หลีกเลี่ยงการพิมพ์โทเค็นซ้ำด้วยการเก็บไว้ในไฟล์ ~/.pypirc หรือตัวแปรสภาพแวดล้อม (TWINE_USERNAME, TWINE_PASSWORD) อย่าเก็บไฟล์นี้ไว้ในการควบคุมรุ่น และให้มีเพียงคุณเท่านั้นที่อ่านไฟล์ได้
การอัปโหลดไปยัง PyPI
เมื่อ TestPyPI ใช้งานได้เรียบร้อยแล้ว ให้เผยแพร่จริงด้วย twine upload dist/* ภายในเวลาไม่นาน แพ็กเกจของคุณจะติดตั้งได้ทั่วโลก การดำเนินการนี้ย้อนกลับไม่ได้ คุณไม่สามารถอัปโหลดรุ่นเดิมซ้ำได้หลังจากลบรุ่นนั้นแล้ว
รุ่นไม่สามารถเปลี่ยนแปลงได้
PyPI ไม่อนุญาตให้คุณเขียนทับรุ่นที่เผยแพร่แล้ว หากพบข้อผิดพลาดหลังเผยแพร่ คุณต้องเผยแพร่รุ่นใหม่ เช่น เพิ่มหมายเลขแพตช์ โปรดสร้างกฎนี้ไว้ในเวิร์กโฟลว์ของคุณ เพื่อไม่ให้คุณติดขัดในภายหลัง
published = {'1.0.0', '1.0.1'}
new_version = '1.0.1'
if new_version in published:
print(new_version, 'already on PyPI - bump and rebuild')
else:
print(new_version, 'is free to upload')ตรวจสอบการติดตั้ง
หลังอัปโหลด ให้ยืนยันว่าแพ็กเกจใช้งานได้ โดยสร้างสภาพแวดล้อมเสมือนใหม่แล้วเรียกใช้ pip install mytool จากนั้นนำเข้าแพ็กเกจ การติดตั้งจากสภาพแวดล้อมใหม่ที่สะอาดจะช่วยตรวจจับไฟล์ที่ขาดหายและข้อผิดพลาดเกี่ยวกับสิ่งที่ต้องพึ่งพา ซึ่งการสร้างแพ็กเกจไม่สามารถตรวจพบได้
การเผยแพร่ที่เชื่อถือได้
โครงการสมัยใหม่สามารถข้ามการใช้โทเค็นด้วยการเผยแพร่ที่เชื่อถือได้ โดย PyPI จะยืนยันตัวตนของเวิร์กโฟลว์การผสานรวมอย่างต่อเนื่องโดยตรงผ่าน OpenID เพื่อเชื่อมต่อ เช่น เวิร์กโฟลว์ของ GitHub ไม่มีการจัดเก็บข้อมูลลับที่มีอายุการใช้งานยาวนานไว้ที่ใด จึงปลอดภัยยิ่งขึ้น
ทไวน์ยังคงทำหน้าที่อัปโหลด แต่ข้อมูลรับรองจะมีอายุสั้นและออกให้ขณะเรียกใช้
การเผยแพร่โดยอัตโนมัติ
การตั้งค่าที่ใช้กันทั่วไปจะเริ่มเผยแพร่เมื่อคุณส่งแท็กรุ่น เช่น v1.0.0 ระบบการผสานรวมอย่างต่อเนื่องจะสร้างแพ็กเกจ เรียกใช้ twine check และอัปโหลดโดยอัตโนมัติ การติดแท็กจึงกลายเป็นการกระทำเพียงอย่างเดียวที่ใช้เผยแพร่รุ่น
วิธีนี้ช่วยให้การเผยแพร่มีรูปแบบสม่ำเสมอและลดข้อผิดพลาดจากการอัปโหลดด้วยตนเอง
ตรวจสอบความเข้าใจ
ทดสอบความรู้เกี่ยวกับการเผยแพร่
สรุปทบทวน
คุณเผยแพร่แพ็กเกจได้แล้ว:
pip install twineจากนั้นเรียกใช้twine check dist/*- ซ้อมเผยแพร่บน TestPyPI ก่อนอัปโหลดจริง
- ยืนยันตัวตนด้วยโทเค็นส่วนติดต่อโปรแกรมประยุกต์ที่กำหนดขอบเขต (
__token__) ห้ามใช้รหัสผ่าน twine upload dist/*ใช้เผยแพร่ รุ่นต่าง ๆ ไม่สามารถเปลี่ยนแปลงได้ ดังนั้นให้เพิ่มรุ่นใหม่เพื่อแก้ข้อผิดพลาด- ตรวจสอบด้วย
pip installในสภาพแวดล้อมใหม่ที่สะอาด
คำถามที่พบบ่อย
บทเรียน “การเผยแพร่ด้วย twine” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การเผยแพร่ด้วย twine” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การเผยแพร่ด้วย twine”
อัปโหลดไปยัง PyPI คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การเผยแพร่ด้วย twine” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม
ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- โครงสร้างโครงการและ pyproject.toml
- การสร้างด้วย build
- การกำหนดรุ่นและข้อมูลเมทาดาทา
- การเผยแพร่ด้วย twine