ติดตั้งแพ็กเกจ Qiskit 1.0 ใหม่
Qiskit 1.0 ใช้โครงสร้างแพ็กเกจที่แตกต่างจากเวอร์ชันก่อนหน้า และอาจทำให้เกิดปัญหาในสภาพแวดล้อมที่ใช้แพ็กเกจซึ่งยังไม่พร้อมรองรับ Qiskit 1.0
อย่าพยายามอัพเกรด Python virtual environment ที่มีอยู่แล้วไปยัง Qiskit 1.0 โดยตรง
เราจะไม่ทำการเปลี่ยนแปลงที่ breaking เช่นนี้ในอนาคตอีก นี่เป็นเหตุการณ์ครั้งเดียวที่เกิดขึ้นในการเปิดตัว Qiskit 1.0 โดยเฉพาะเพื่อให้การจัดการแพ ็กเกจในอนาคตเป็นเรื่องง่ายที่สุด
คู่มือนี้แบ่งออกเป็นหัวข้อต่างๆ ดังนี้ อ่านเฉพาะหัวข้อที่เกี่ยวข้องกับตัวเองก็พอ
- ผู้ใช้ทั่วไปควรอ่านส่วน สำหรับผู้ใช้
- ถ้าพัฒนาหรือดูแลแพ็กเกจที่พึ่งพา Qiskit ให้อ่านส่วน สำหรับนักพัฒนา
- ถ้าเจอปัญหาในการติดตั้งหรือ import Qiskit 1.0 ให้ดูส่วน การแก้ปัญหา
ถ้าสนใจทำความเข้าใจโครงสร้างแพ็กเกจเดิมและสาเหตุที่มันเปลี่ยน ให้ดู ภาพรวมของการเปลี่ยนแปลงแพ็กเกจที่ breaking
สำหรับผู้ใช้
ต้องสร้าง virtual environment ใหม่เพื่อติดตั้ง Qiskit 1.0 การอัพเกรด installation ที่มีอยู่แล้วเป็น Qiskit 1.0 โดยตรงนั้นยุ่งยากและเสี่ยงต่อข้อผิดพลาดมาก
ตัวอย่างในส่วนนี้ใช้โมดูล venv ที่เป็นส่วนหนึ่งของ Python standard library
ถ้าใช้เครื่องมืออื่น เช่น virtualenv หรือ conda ให้ดูเอกสารของมันเพื่อขอความช่วยเหลือ
สำหรับคำสั่งบน Linux และ macOS ใช้ syntax แบบ bash สำหรับ Windows ใช้ PowerShell
สร้าง environment ใหม่
-
สร้าง virtual environment ใหม่ในแต่ละ project directory ที่กำลังทำงานอยู่ โดยใช้ Python 3.8 ข ึ้นไปตามที่ต้องการ
- macOS
- Linux
- Windows
python3 -m venv .venvpython3 -m venv .venvpython -m venv .venv
-
Activate environment
- macOS
- Linux
- Windows
source .venv/bin/activatesource .venv/bin/activate.venv\Scripts\activate.ps1 -
ติดตั้งแพ็กเกจตามต้องการ ควรทำโดยใช้คำสั่ง
pip installเพียงคำสั่งเดียวพร้อม dependencies ทั้งหมดในครั้งเดียวpip install 'qiskit>=1'สามารถเพิ่มแพ็กเกจอื่นๆ ได้โดยระบุเป็น arguments เพิ่มเติม เช่น:
pip install 'qiskit>=1' jupyterlab pandas matplotlibQiskit 1.0 มีการเปลี่ยนแปลงที่ breaking ดังนั้นหลายแพ็กเกจจึงถูกทำเครื่องหมายว่ายังไม่รองรับ ดังนั้นอาจเห็น error จาก
pipจนกว่าแพ็กเกจเหล่านั้นจะออกเวอร์ชันใหม่ แพ็กเกจเวอร์ชันเก่าอาจยังพึ่งพาqiskit-terraแบบ legacy ด้วย แพ็กเกจเหล่านั้นอาจไม่แสดง error ตอนรันคำสั่งนี้ แต่อาจเกิด error ตอนรันimport qiskitไม่ควรติดตั้งแพ็กเกจใดๆ ที่พึ่งพาqiskit-terraโดยตรงเคล็ดลับวิธีหนึ่งในการสั่งให้
pipห้ามqiskit-terraจากคำสั่งinstallแต่ละคำสั่งคือใช้ constraints file ที่กำหนดให้qiskit-terraอยู่ที่เวอร์ชันที่เป็นไปไม่ได้ เช่น constraints file ที่มีบรรทัดqiskit-terra>=1.0จะทำให้ถ้า dependency ใดพยายามติดตั้งqiskit-terraจะไม่มีเวอร์ชันที่ตีพิมพ์แล้วตรงกับ requirementsเราได้จัดทำไฟล์ดังกล่าวใน GitHub Gist ที่ https://qisk.it/1-0-constraints ซึ่งสามารถใช้ได้ดังนี้:
pip install -c https://qisk.it/1-0-constraints qiskit [other packages]ถ้าแพ็กเกจใดต้องการ
qiskit-terraจะเห็น resolution failureข้อควรระวังอย่าติดตั้งแพ็กเกจที่ไม่เข้ากันกับ Qiskit 1.0 ใน virtual environment นี้ ถ้าจำเป็นต้องใช้แพ็กเกจเหล่านั้น ให้ติดตั้งใน virtual environment แยกต่างหากพร้อม Qiskit 0.45 หรือ 0.46
ถ้ามี environment เดิมอยู่แล้ว สามารถใช้
pipdeptreeเพื่อ query requirements ของแพ็กเกจที่ติดตั้งอยู่เพื่อดูว่ามีตัวไหนที่ต้องการqiskit<1หรือไม่ สำหรับตัวที่ต้องการqiskit<1ให้ตรวจสอบการอัพเดตที่ทำให้เข้ากันได้กับ Qiskit 1.0ถ้าเจอปัญหา ให้ดูส่วน การแก้ปัญหา หรือถามใน Qiskit Slack ถ้าคิดว่ามี bug สามารถ สร้าง issue ให้ Qiskit ได้
-
ถ้ายังไม่ได้วางแผนจะใช้ environment ทันที ให้ใช้คำสั่ง
deactivateเพื่อออกจาก environment
ใช้งาน environment ใหม่
ทุกครั้งที่เริ่ม session command line ใหม่ ต้องนำทางไปยัง project directory และ "activate" environment โดยรันคำสั่ง activate:
- macOS
- Linux
- Windows
source .venv/bin/activate
source .venv/bin/activate
.venv\Scripts\activate.ps1
สำหรับนักพัฒนา
ถ้าดูแลแพ็กเกจที่พึ่งพา Qiskit ใช้ข้อมูลนี้เพื่อเรียนรู้วิธีระบุความเข้ากันได้อย่างถูกต้องและทดสอบกับ Qiskit 1.0
คำแนะนำสำหรับ requirements
เราแนะนำให้แพ็กเกจของตัวเองกำหนด qiskit>=0.45,<1 (หรือ lower bound อื่นที่เหมาะสม) ถ้ายังไม่แน่ใจว่าแพ็กเกจนั้นเข้ากันได้กับ Qiskit 1.0 หรือไม่
นี่คือ คำแนะนำเดียวกับที่ให้สำหรับความเข้ากันได้กับ NumPy 2.0
Qiskit 1.0 release candidate เวอร์ชัน 1.0.0rc1 จะเปิดตัวในวันที่ 1 กุมภาพันธ์ 2024 ควรทดสอบแพ็กเกจกับ release candidate นี้ และโดยเร็วที่สุดให้ออก (compatible) เวอร์ชันใหม่ของแพ็กเกจโดยถอด upper requirement pin ออก
คำแนะนำสำหรับการทดสอบกับ Qiskit 1.0
คำแนะนำเหล่านี้ใช้สำหรับการทดสอบเชิงรุกกับ branch main ของ Qiskit และสำหรับการทดสอบกับ release candidate 1.0.0rc1 (และเวอร์ชันหลังจากนั้นถ้ามี)
เราไม่แนะนำให้ทำ branch-protect บน CI success กับ branch main ของ Qiskit ในตอนแรก เนื่องจากการเปลี่ยนแปลงของ Qiskit อาจทำให้ merge PR ไม่ได้
หลังจาก Qiskit release candidate ออกมาแล้ว และหลังจาก dependencies ทั้งหมดของแพ็กเกจรองรับ Qiskit 1.0 แล้ว เรา แนะนำ ให้ทำ branch-protect บน success กับ release candidate ล่าสุด เพื่อให้มั่นใจว่าแพ็กเกจยังคงเข้ากันได้กับ Qiskit 1.0
ถ้าทั้งแพ็กเกจและ transitive dependencies ทั้งหมดของมันไม่มีการ pin requirement ที่ qiskit<1 ให้สร้าง testing virtual environment ตามปกติในคำสั่ง pip install เดียว และระบุ qiskit==1.0.0rc1 หรือ qiskit==git+https://github.com/Qiskit/qiskit.git@main ตามที่เหมาะสม
นี่เป็นวิธีที่น่าเชื่อถือที่สุดในการให้มั่นใจว่ามี environment ที่ valid อย่างสมบูรณ์
ถ้า component เดียวใน dependency graph ของแพ็กเกจที่มีการ pin requirement ที่ qiskit<1 คือแพ็กเกจของตัวเองเท่านั้น อาจต้องการให้ CI suite patch requirements file ชั่วคราวเ พื่ออนุญาต Qiskit 1.0 ก่อน จากนั้นติดตั้ง environment ในขั้นตอนเดียวเหมือนเดิม
หรือใช้กฎต่อไปนี้สำหรับการอัพเกรด environment แบบทั่วไป แต่เปลี่ยนเป็น single-environment resolution โดยเร็วที่สุดเท่าที่ทำได้
ถ้า transitive dependency อย่างน้อยหนึ่งตัวยังไม่มีเวอร์ชัน release ที่อนุญาตรองรับ Qiskit 1.0 ต้องทำการเปลี่ยนแปลงด้วยตนเอง มีหลายกลยุทธ์ที่ลองได้ เรียงตามลำดับความชอบโดยประมาณ (ชอบที่สุดไปน้อยที่สุด):
- ติดตั้ง problematic dependency จาก branch
mainของมันเอง ถ้าเวอร์ชัน development ผ่อนคลาย pin แล้ว เพื่อให้สร้าง test environment ได้ในขั้นตอนเดียว - ยกเว้นการใช้ dependency นั้นออกจาก test environment ถ้าทำได้
- สร้าง test environment แบบเดิมตามปกติ จากนั้น override ด้วยตนเองเพื่อใช้ Qiskit 1.0