ฉันเห็นคำสั่งเช่นนี้มากขึ้นเรื่อย ๆ :
$ pip install "splinter[django]"
วงเล็บเหลี่ยมเหล่านี้ทำหน้าที่อะไร?
ฉันเห็นคำสั่งเช่นนี้มากขึ้นเรื่อย ๆ :
$ pip install "splinter[django]"
วงเล็บเหลี่ยมเหล่านี้ทำหน้าที่อะไร?
pip install "splinter[django]"
เพื่อหลีกเลี่ยงการขยายตัวของเปลือกใด ๆ โดยไม่ได้ตั้งใจของแบบแผน
คำตอบ:
ไวยากรณ์ที่คุณใช้คือ:
pip install "project[extra]"
ในกรณีของคุณคุณจะแพคเกจที่มีการเพิ่มการสนับสนุนสำหรับ วงเล็บเหลี่ยม ( ) ไม่ใช่ไวยากรณ์เฉพาะ แต่เป็นแบบแผน จริงๆคุณกำลังติดตั้งแพ็คเกจชื่อ: .installing
splinter
django
[]
"splinter[django]"
คำอธิบายจาก@chetner
:
คำสั่ง
pip install splinter django
จะติดตั้งสองแพ็คเกจชื่อsplinter
และdjango
.splinter[django]
บนมืออื่น ๆ ที่ติดตั้งแตกต่างจากที่splinter
แพคเกจที่มีการสนับสนุนdjango
สำหรับ โปรดทราบว่าไม่มีส่วนเกี่ยวข้องกับdjango
แพ็คเกจ แต่เป็นเพียงสตริงที่กำหนดโดยsplinter
แพ็กเกจสำหรับชุดคุณลักษณะเฉพาะที่เปิดใช้งาน
extra
แปลว่าอะไร?
splinter
และdjango
. splinter[django]
บนมืออื่น ๆ ที่ติดตั้งแตกต่างจากที่แพคเกจที่มีการสนับสนุนsplinter
django
โปรดทราบว่าไม่มีส่วนเกี่ยวข้องกับdjango
แพ็คเกจ แต่เป็นเพียงสตริงที่กำหนดโดยsplinter
แพ็กเกจสำหรับชุดคุณลักษณะเฉพาะที่เปิดใช้งาน
splinter
ยังคงเป็นชื่อแพ็คเกจ pip
แยกวิเคราะห์splinter[django]
และรับรู้ว่ามันเป็นชื่อแพ็กเกจโดยมี "อาร์กิวเมนต์" พิเศษเพื่อช่วยในการติดตั้งไฟล์ที่ถูกต้อง วิธีการโต้แย้งdjango
การตีความนี้ขึ้นอยู่กับsetup.py
ไฟล์ (หรือบางไฟล์ config อื่น ๆ หรือไม่ฉันไม่จริงรู้รายละเอียด) splinter
ใช้ในการกำหนดแพคเกจ
pip install splinter
pip install splinter[django]
แพคเกจเพิ่มเติมที่ติดตั้งอาจ (และอาจทำ) เปิดใช้งานคุณสมบัติเพิ่มเติมของเสี้ยนเพื่อทำงานได้ แต่จะไม่เปลี่ยนแปลงอะไรเกี่ยวกับแพ็คเกจเสี้ยน เพียงแค่บอก pip เกี่ยวกับการอ้างอิงเพิ่มเติม
[optional]
ใน PIP หมายถึงการอ้างอิงที่เป็นทางเลือกในกรณีที่นักพัฒนารายอื่นต้องการนำรูปแบบนี้ไปใช้ในการปรับใช้แพ็คเกจ Python ของตนเองนี่คือคำอธิบายเพิ่มเติมเกี่ยวกับbrackets []
in pip
ในการติดตั้งairflow
จากpipเราใช้คำสั่งนี้:
pip install 'apache-airflow'
คุณสามารถติดตั้งส่วนประกอบเสริมของการไหลของอากาศด้วย:
pip install 'apache-airflow[aws]'
# [optional] -----------^
เมื่อเราค้นหา pypiเพื่อapache-airflow
ทราบว่าแพ็คเกจเสริมไม่ปรากฏขึ้น:
pip search 'apache-airflow'
apache-airflow (1.10.9) - Programmatically author, schedule and monitor data pipelines
pylint-airflow (0.1.0a1) - A Pylint plugin to lint Apache Airflow code.
swe-airflow-tools (0.0.3) - Tools for Apache Airflow Application
airflow (0.6) - Placeholder for the old Airflow package
...
setup.py
คุณสามารถดูว่าสิ่งนี้สำเร็จได้อย่างไรในsetup.py
สคริปต์
ทางด้านซ้ายในsetup.py
- extras_require
กำหนดไว้
ทางด้านขวาคือคำสั่งการติดตั้งที่สัมพันธ์กันสำหรับแพ็กเกจย่อยที่เป็นทางเลือกเหล่านี้
ค่อนข้างแน่ใจว่านี่คือความพิเศษของ setuptools:
บางครั้งโครงการมีการอ้างอิง "แนะนำ" ซึ่งไม่จำเป็นสำหรับการใช้งานทั้งหมดของโครงการ ตัวอย่างเช่นโปรเจ็กต์อาจเสนอเอาต์พุต PDF ที่เป็นทางเลือกหากมีการติดตั้ง ReportLab และ reStructuredText รองรับหากติดตั้ง docutils คุณสมบัติเสริมเหล่านี้เรียกว่า“ ความพิเศษ” ...
นี่คือรายการจากsetup.py
ไฟล์สำหรับโครงการที่เป็นปัญหา :
"django": ["Django>=1.7.11;python_version<'3.0'", "Django>=2.0.6;python_version>'3.3'", "lxml>=2.3.6", "cssselect", "six"],