Documentation for a newer release is available. View Latest

Python

Python 2 ຖືກຍົກເລີກການນຳໃຊ້ໃນ Fedora 30

ຫຼາຍໂມດູນຂອງ Python 2 ໄດ້ຖືກຖອນອອກຈາກຊຸດການແຈກຢາຍ: ແພັກເກດທີ່ສະໜອງພຽງແຕ່ໂມດູນນຳເຂົ້າຂອງ Python 2, ຫາກພວກມັນບໍ່ຖືກນຳໃຊ້ໂດຍແພັກເກດອື່ນ (leaf packages).

ເຖິງວ່າການປ່ຽນແປງນີ້ຈະບໍ່ສົ່ງຜົນກະທົບຕໍ່ຜູ້ໃຊ້ທົ່ວໄປ, ແຕ່ມັນຈະສົ່ງຜົນກະທົບຕໍ່ຜູ້ພັດທະນາທີ່ນຳໃຊ້ໂມດູນ Python ທີ່ມາກັບລະບົບ.

ຖ້າທ່ານກຳລັງພັດທະນາຊອບແວທີ່ຕ້ອງເຮັດວຽກກັບ Python 2, ພວກເຮົາແນະນຳໃຫ້ໃຊ້ສະພາບແວດລ້ອມຈຳລອງ (virtual environment) ແລະ ຕິດຕັ້ງສ່ວນປະກອບທີ່ຈຳເປັນຈາກ Python Package index (PyPI). ເບິ່ງລາຍລະອຽດໄດ້ທີ່: https://developer.fedoraproject.org/tech/languages/python/python-installation.html

ພວກເຮົາກໍແນະນຳໃຫ້ໃຊ້ສະພາບແວດລ້ອມຈຳລອງ (venv) ສຳລັບ Python 3 ເຊັ່ນກັນ, ຖ້າຊອບແວຂອງທ່ານເນັ້ນໃສ່ລະບົບນິເວດ Python ໂດຍລວມຫຼາຍກວ່າ Fedora ໂດຍສະເພາະ. ການນຳໃຊ້ venv ຈະຊ່ວຍແຍກສະພາບແວດລ້ອມການພັດທະນາຂອງທ່ານອອກຈາກລະບົບ.

ຖ້າທ່ານກຳລັງພັດທະນາສຳລັບແພັກເກດ Fedora, ກະລຸນາປ່ຽນໄປໃຊ້ Python 3 ໂດຍໄວທີ່ສຸດ. ການຖອນ Python 2 ອອກເກືອບທັງໝົດແມ່ນມີແຜນໄວ້ສຳລັບເວີຊັນຖັດໄປ.

ການສ້າງສ່ວນປະກອບທີ່ຈຳເປັນໂດຍອັດຕະໂນມັດສຳລັບແພັກເກດ Python

ຕົວສ້າງ (generator) ທີ່ສ້າງ Provides ແລະ Requires ສຳລັບແພັກເກດ Python RPM ໂດຍອີງຕາມໄຟລ໌ setup.py ໄດ້ຖືກເປີດໃຊ້ງານເປັນຄ່າເລີ່ມຕົ້ນແລ້ວ. ສິ່ງນີ້ຊ່ວຍໃຫ້ການສ້າງແພັກເກດ Python ງ່າຍຂຶ້ນ ແລະ ເປັນອັດຕະໂນມັດຫຼາຍຂຶ້ນ ໂດຍການນຳໃຊ້ຂໍ້ມູນຈາກໂຄງການຕົ້ນສະບັບ (upstream project), ແລະ ຄວນຈະຊ່ວຍຫຼຸດຜ່ອນສ່ວນປະກອບທີ່ຈຳເປັນທີ່ບໍ່ຈຳເປັນ ຫຼື ທີ່ຂາດຫາຍໄປໃນ RPMs.

Python progressbar ຖືກປ່ຽນແທນດ້ວຍ progressbar2

ແພັກເກດ progressbar ໄດ້ຖືກອັບເດດໃຫ້ໃຊ້ progressbar2 ແທນ, ເຊິ່ງໃໝ່ກວ່າ ແລະ ມີການບຳລຸງຮັກສາທີ່ດີກວ່າ.

ສ່ວນຂະຫຍາຍຂອງ Nautilus ຕອນນີ້ໃຊ້ Python 3 ແລ້ວ

ເພື່ອເປັນສ່ວນໜຶ່ງຂອງການປ່ຽນໄປໃຊ້ Python 3 ໂດຍລວມ, ສ່ວນຂະຫຍາຍສຳລັບຕົວທ່ອງໄຟລ໌ ແລະ ສ່ວນຕິດຕໍ່ຜູ້ໃຊ້ແບບກຣາຟິກ Nautilus ແມ່ນຈະຖືກປະມວນຜົນດ້ວຍ Python 3, ແລະ ສ່ວນຂະຫຍາຍທີ່ຮອງຮັບແຕ່ Python 2 ຈະບໍ່ໄດ້ຮັບການສະໜັບສະໜູນອີກຕໍ່ໄປ. ສ່ວນຂະຫຍາຍທີ່ມາກັບຊຸດການແຈກຢາຍໄດ້ຖືກອັບເດດເພື່ອໃຫ້ຮອງຮັບ Python 3 ແລ້ວ. ຜູ້ໃຊ້ທີ່ໄດ້ຕິດຕັ້ງສ່ວນຂະຫຍາຍຂອງຕົນເອງຄວນກວດສອບວ່າພວກມັນຮອງຮັບ Python 3 ຫຼື ບໍ່, ຖ້າບໍ່ດັ່ງນັ້ນໃຫ້ຖອນການຕິດຕັ້ງອອກ.

ຫຼີກລ່ຽງການໃຊ້ build flags ທີ່ສະເພາະເຈາະຈົງສຳລັບ Fedora ໃນສ່ວນຂະຫຍາຍ Python ທີ່ບໍ່ແມ່ນ RPM

ເມື່ອໂມດູນສ່ວນຂະຫຍາຍຖືກສ້າງຂຶ້ນ, ໂມດູນ distutils ຈະສະໜອງຊຸດຄຳສັ່ງສຳລັບການຄອມໄພລ໌ (compilation) ແລະ ການເຊື່ອມໂຍງ (link flags) ເພື່ອຮັບປະກັນວ່າໂມດູນຖືກສ້າງຂຶ້ນໃນຮູບແບບທີ່ເຂົ້າກັນໄດ້ກັບຕົວ Python ເອງ. ເມື່ອສ້າງໂມດູນໃນ Fedora, ຊຸດຄຳສັ່ງດຽວກັນນີ້ໄດ້ຖືກນຳໃຊ້ສຳລັບໂມດູນທີ່ເປັນສ່ວນໜຶ່ງຂອງຊຸດການແຈກຢາຍ (ເຊັ່ນ: ສ່ວນໜຶ່ງຂອງແພັກເກດ RPM) ແລະ ສຳລັບໂມດູນທີ່ຄອມໄພລ໌ໂດຍຜູ້ໃຊ້ທີ່ ນຳໃຊ້ Fedora. ຄຳສັ່ງເຫຼົ່ານັ້ນລວມມີ GCC plugins ທີ່ກຳນົດເອງ ແລະ ຕົວເລືອກການເຊື່ອມໂຍງເພີ່ມເຕີມເພື່ອ "ສ້າງຄວາມປອດໄພ" ໃຫ້ກັບໂຄ້ດ ແລະ ເພີ່ມຄຳອະທິບາຍ annobin, ເຊິ່ງເໝາະສົມສຳລັບຊຸດການແຈກຢາຍ, ແຕ່ເປັນສິ່ງທີ່ບໍ່ຄາດຄິດ ແລະ ບໍ່ຈຳເປັນສຳລັບໂຄ້ດຂອງຜູ້ໃຊ້. ຕອນນີ້ໄດ້ມີການສະໜອງຊຸດຄຳສັ່ງທີ່ແຍກຕ່າງຫາກ ແລະ ນ້ອຍກວ່າ ສຳລັບໂມດູນສ່ວນຂະຫຍາຍທີ່ຄອມໄພລ໌ໂດຍຜູ້ໃຊ້.

build flags (CFLAGS, CXXFLAGS ແລະ LDFLAGS) ທີ່ບັນທຶກໄວ້ໃນໂມດູນ distutils ຂອງ Python ສຳລັບການສ້າງໂມດູນສ່ວນຂະຫຍາຍແມ່ນໄດ້ປ່ຽນຈາກ:

  • %{build_cflags},

  • %{build_cxxflags} ແລະ

  • %{build_ldflags}

ເປັນ

  • %{extension_cflags},

  • %{extension_cxxflags} ແລະ

  • %{extension_ldflags}.

ລິງນີ້ ໝາຍຄວາມວ່າໃນຕອນນີ້ ຈະບໍ່ມີ GCC plugins (ເຊັ່ນ annobin) ຖືກເປີດໃຊ້ ແລະ ບໍ່ມີການນຳໃຊ້ໄຟລ໌ GCC spec (ອາກິວເມນ -specs=) ເປັນຄ່າເລີ່ມຕົ້ນ ເມື່ອສ້າງໂມດູນສ່ວນຂະຫຍາຍ Python (ຕົວຢ່າງ: ດ້ວຍ python3 setup.py build).

ແພັກເກດ python3-devel ຈະບໍ່ຈຳເປັນຕ້ອງໃຊ້ redhat-rpm-config ໃນເວລາເຮັດວຽກ (ເຊິ່ງກ່ອນໜ້ານີ້ຈຳເປັນຕ້ອງມີເພື່ອຮອງຮັບ annobin ແລະ ໄຟລ໌ GCC spec).

ການປ່ຽນແປງນີ້ສົ່ງຜົນກະທົບຕໍ່ການສ້າງໂມດູນສ່ວນຂະຫຍາຍໂດຍຜູ້ໃຊ້, ພາຍນອກສະພາບແວດລ້ອມ RPM. ຄັງສຳນວນມາດຕະຖານ (standard library) ຂອງ Python ແລະ ແພັກເກດ Python 3 RPM ຂອງ Fedora ແມ່ນຍັງຄົງຖືກສ້າງດ້ວຍຊຸດຄຳສັ່ງ "ແບບດັ້ງເດີມ" (%{build_cflags} ແລະ ອື່ນໆ), ຍົກເວັ້ນແຕ່ແພັກເກດນັ້ນຈະໃຊ້ວິທີການທີ່ບໍ່ແມ່ນມາດຕະຖານໃນການສ້າງສ່ວນຂະຫຍາຍ.

ມີພຽງແຕ່ Python 3.7 ແລະ 3.6 ເທົ່ານັ້ນທີ່ຈະຖືກປ່ຽນແປງ.

ສຳລັບຂໍ້ມູນລະອຽດກ່ຽວກັບການປ່ຽນແປງນີ້, ລວມທັງເຫດຜົນ ແລະ ຜົນກະທົບຕໍ່ຜູ້ພັດທະນາ Python ແລະ ແພັກເກດຕ່າງໆ, ສາມາດເບິ່ງໄດ້ທີ່ ໜ້າການປ່ຽນແປງໃນ Wiki.