อ่านเอกสารล่าสุด - เรียกดูที่เก็บรหัส GitHub
แยกการนำเข้าของคุณ ดังนั้นคุณไม่จำเป็นต้องทำ
isort เป็นยูทิลิตี้ / ไลบรารี Python เพื่อจัดเรียงการนำเข้าตามตัวอักษรและแยกออกเป็นส่วน ๆ และตามประเภทโดยอัตโนมัติ มันมียูทิลิตีบรรทัดคำสั่ง ไลบรารี Python และปลั๊กอินสำหรับโปรแกรมแก้ไขต่างๆ เพื่อจัดเรียงการนำเข้าทั้งหมดของคุณอย่างรวดเร็ว ต้องใช้ Python 3.8+ ในการทำงาน แต่รองรับการจัดรูปแบบโค้ด Python 2 ด้วย
ก่อนแยก:
from my_lib import Object
import os
from my_lib import Object3
from my_lib import Object2
import sys
from third_party import lib15 , lib1 , lib2 , lib3 , lib4 , lib5 , lib6 , lib7 , lib8 , lib9 , lib10 , lib11 , lib12 , lib13 , lib14
import sys
from __future__ import absolute_import
from third_party import lib3
print ( "Hey" )
print ( "yo" )
หลังจากแยก:
from __future__ import absolute_import
import os
import sys
from third_party import ( lib1 , lib2 , lib3 , lib4 , lib5 , lib6 , lib7 , lib8 ,
lib9 , lib10 , lib11 , lib12 , lib13 , lib14 , lib15 )
from my_lib import Object , Object2 , Object3
print ( "Hey" )
print ( "yo" )
การติดตั้ง isort นั้นง่ายดายเพียง:
pip install isort
จากบรรทัดคำสั่ง :
หากต้องการทำงานกับไฟล์เฉพาะ:
isort mypythonfile.py mypythonfile2.py
หากต้องการสมัครซ้ำ:
isort .
หากเปิดใช้งาน globstar isort .
เทียบเท่ากับ:
isort ** / * .py
หากต้องการดูการเปลี่ยนแปลงที่เสนอโดยไม่ใช้:
isort mypythonfile.py --diff
สุดท้าย หากต้องการรัน isort กับโปรเจ็กต์แบบอะตอมมิก ให้ใช้การเปลี่ยนแปลงเฉพาะในกรณีที่ไม่มีข้อผิดพลาดทางไวยากรณ์:
isort --atomic .
(หมายเหตุ: สิ่งนี้ถูกปิดใช้งานโดยค่าเริ่มต้น เนื่องจากจะป้องกันไม่ให้ isort ทำงานกับโค้ดที่เขียนโดยใช้ Python เวอร์ชันอื่น)
จากภายใน Python :
import isort
isort . file ( "pythonfile.py" )
หรือ:
import isort
sorted_code = isort . code ( "import b n import a n " )
มีการเขียนปลั๊กอินหลายตัวที่ช่วยให้สามารถใช้ isort จากภายในโปรแกรมแก้ไขข้อความที่หลากหลาย คุณสามารถดูรายการทั้งหมดได้ใน isort wiki นอกจากนี้ ฉันจะยอมรับคำขอดึงที่มีปลั๊กอินสำหรับโปรแกรมแก้ไขข้อความอื่นๆ และเพิ่มเอกสารประกอบสำหรับพวกเขาตามที่ได้รับแจ้ง
คุณจะสังเกตเห็นเหนือการตั้งค่า "multi_line_output" การตั้งค่านี้กำหนดวิธีจากการห่อการนำเข้าเมื่อขยายเกินขีดจำกัด line_length และมีการตั้งค่าที่เป็นไปได้ 12 แบบ
หากต้องการเปลี่ยนลักษณะการเยื้องคงที่ เพียงเปลี่ยนคุณสมบัติการเยื้องด้วยรูปแบบที่ยอมรับต่อไปนี้:
ตัวอย่างเช่น:
" "
มีค่าเท่ากับ 4
สำหรับสไตล์การนำเข้าที่ใช้วงเล็บ คุณสามารถควบคุมได้ว่าจะรวมเครื่องหมายจุลภาคต่อท้ายหลังจากการนำเข้าครั้งล่าสุดด้วยตัวเลือก include_trailing_comma
(ค่าเริ่มต้นเป็น False
)
ตั้งแต่ isort 3.1.0 รองรับการนำเข้าหลายบรรทัดที่สมดุลแล้ว ด้วย isort ที่เปิดใช้งานนี้ จะเปลี่ยนความยาวการนำเข้าแบบไดนามิกเป็นความยาวที่สร้างกริดที่สมดุลที่สุด ในขณะที่ยังคงต่ำกว่าความยาวการนำเข้าสูงสุดที่กำหนดไว้
ตัวอย่าง:
from __future__ import ( absolute_import , division ,
print_function , unicode_literals )
จะถูกผลิตแทน:
from __future__ import ( absolute_import , division , print_function ,
unicode_literals )
หากต้องการเปิดใช้งานชุดนี้ balanced_wrapping
เป็น True
ในการกำหนดค่าของคุณ หรือส่งตัวเลือก -e
ไปยังยูทิลิตีบรรทัดคำสั่ง
isort มอบตัวเลือกการกำหนดค่าเพื่อเปลี่ยนแปลงเกือบทุกแง่มุมของการจัดระเบียบ เรียงลำดับ หรือจัดกลุ่มการนำเข้าเข้าด้วยกันในส่วนต่างๆ
คลิกที่นี่เพื่อดูภาพรวมของตัวเลือกเหล่านี้ทั้งหมด
หากต้องการให้ isort ละเว้นการนำเข้าครั้งเดียว เพียงเพิ่มความคิดเห็นที่ท้ายบรรทัดการนำเข้าที่มีข้อความ isort:skip
:
import module # isort:skip
หรือ:
from xyz import ( abc , # isort:skip
yo ,
hey )
หากต้องการให้ isort ข้ามไฟล์ทั้งหมด เพียงเพิ่ม isort:skip_file
ลงในสตริงเอกสารของโมดูล:
""" my_module.py
Best module ever
isort:skip_file
"""
import b
import a
isort สามารถรันหรือกำหนดค่าให้เพิ่ม / ลบการนำเข้าได้โดยอัตโนมัติ
ดูคำแนะนำฉบับสมบูรณ์ได้ที่นี่
--check-only
isort ยังสามารถใช้เพื่อตรวจสอบว่าโค้ดมีรูปแบบที่ถูกต้องโดยรันด้วย -c
ไฟล์ใดๆ ที่มีการจัดเรียงและ/หรือจัดรูปแบบการนำเข้าไม่ถูกต้องจะถูกส่งออกไปยัง stderr
isort ** / * .py -c -v
SUCCESS: /home/timothy/Projects/Open_Source/isort/isort_kate_plugin.py Everything Looks Good !
ERROR: /home/timothy/Projects/Open_Source/isort/isort/isort.py Imports are incorrectly sorted.
จุดที่ยอดเยี่ยมอย่างหนึ่งที่สามารถใช้ได้คือการใช้ git hook ล่วงหน้า เช่นอันนี้โดย @acdha:
https://gist.github.com/acdha/8717683
สิ่งนี้สามารถช่วยรับประกันคุณภาพของโค้ดในระดับหนึ่งตลอดทั้งโปรเจ็กต์
isort มีฟังก์ชัน hook ที่สามารถรวมเข้ากับสคริปต์ก่อนคอมมิต Git ของคุณเพื่อตรวจสอบโค้ด Python ก่อนคอมมิต
ข้อมูลเพิ่มเติมที่นี่
เมื่อติดตั้ง isort จะเปิดใช้งานคำสั่ง setuptools
ซึ่งจะตรวจสอบไฟล์ Python ที่โปรเจ็กต์ของคุณประกาศ
ข้อมูลเพิ่มเติมที่นี่
วางป้ายนี้ไว้ที่ด้านบนของพื้นที่เก็บข้อมูลของคุณเพื่อให้ผู้อื่นทราบว่าโปรเจ็กต์ของคุณใช้ isort
สำหรับ README.md:
[ ![ Imports: isort ] ( https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336 )] ( https://pycqa.github.io/isort/ )
หรือ README.rst:
.. image :: https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336
:target: https://pycqa.github.io/isort/
หากต้องการรายงานช่องโหว่ด้านความปลอดภัย โปรดใช้ผู้ติดต่อด้านความปลอดภัยของ Tidelift Tidelift จะประสานการแก้ไขและเปิดเผยข้อมูล
isort ย่อมาจากคำว่า import sort เดิมทีมันถูกเรียกว่า "sortImports" แต่ฉันเบื่อที่จะพิมพ์อักขระพิเศษแล้วจึงได้รู้ว่า CamelCase ไม่ใช่ pythonic
ฉันเขียน isort เพราะในองค์กรที่ฉันเคยทำงานในผู้จัดการมาในวันหนึ่งและตัดสินใจว่าโค้ดทั้งหมดจะต้องมีการนำเข้าที่เรียงลำดับตามตัวอักษร ฐานโค้ดมีขนาดใหญ่มาก - และเขาตั้งใจให้เราทำด้วยมือ อย่างไรก็ตาม การเป็นโปรแกรมเมอร์ ฉันขี้เกียจเกินไปที่จะใช้เวลา 8 ชั่วโมงในการทำหน้าที่อย่างไร้เหตุผล แต่ก็ไม่ขี้เกียจเกินไปที่จะใช้เวลา 16 ชั่วโมงในการทำให้มันเป็นอัตโนมัติ ฉันได้รับอนุญาตให้ sortImports โอเพ่นซอร์สและเราอยู่ที่นี่ :)
รับการสนับสนุนอย่างมืออาชีพด้วยการสมัครสมาชิก Tidelift
การสนับสนุนอย่างมืออาชีพสำหรับ isort มีให้โดยเป็นส่วนหนึ่งของการสมัครสมาชิก Tidelift Tidelift ช่วยให้ทีมพัฒนาซอฟต์แวร์มีแหล่งเดียวในการซื้อและบำรุงรักษาซอฟต์แวร์ พร้อมการรับประกันระดับมืออาชีพจากผู้เชี่ยวชาญที่รู้จักซอฟต์แวร์ดีที่สุด ขณะเดียวกันก็ผสานรวมกับเครื่องมือที่มีอยู่ได้อย่างราบรื่น
ขอขอบคุณและฉันหวังว่าคุณจะพบว่ามีประโยชน์!
~ทิโมธี ครอสลีย์