ทำไม“ การติดตั้ง pip” ใน Python ทำให้เกิด SyntaxError


232

ฉันพยายามใช้ pip เพื่อติดตั้งแพ็คเกจ ฉันพยายามที่จะเรียกใช้pip installจากงูหลามเปลือก SyntaxErrorแต่ฉันได้รับ เหตุใดฉันจึงได้รับข้อผิดพลาดนี้ ฉันจะใช้ pip เพื่อติดตั้งแพ็คเกจได้อย่างไร

>>> pip install selenium
              ^
SyntaxError: invalid syntax

คำตอบ:


297

pip ถูกเรียกใช้จากบรรทัดคำสั่งไม่ใช่ตัวแปล Python มันเป็นโปรแกรมที่ติดตั้งโมดูลดังนั้นคุณสามารถใช้มันได้จาก Python เมื่อคุณติดตั้งโมดูลแล้วคุณสามารถเปิด Python shell และทำimport seleniumเมื่อคุณติดตั้งโมดูลแล้วคุณสามารถเปิดเปลือกงูหลามและทำ

Python shell ไม่ใช่บรรทัดคำสั่งมันเป็น interpreter แบบโต้ตอบ คุณพิมพ์รหัสหลามลงไปไม่ใช่คำสั่ง


2
ขอบคุณสำหรับความกระจ่าง แต่ฉันยังไม่สามารถเรียกใช้ มันอยู่ที่ไหนกันนะ? มันทำให้ฉันมีข้อผิดพลาด "ไม่รู้จัก pip" (เพราะฉันไม่ใช่ผู้ที่เหมาะสม) ได้รับการติดตั้งใน \ site-packages แต่ฉันกำลังคิดว่ามันและฉันไม่สามารถหา pip.exe ได้
Nacht

25
@Nacht - pipจะอยู่ในไดเรกทอรีสคริปต์ของการติดตั้งหลามของคุณดังนั้นคุณจะต้องการเพิ่มไปยังเส้นทางของคุณ เพิ่มที่คุณC:\Python32\scripts PATHเปลี่ยนพา ธ ตามความจำเป็นโดยพิจารณาจากตำแหน่งที่คุณติดตั้ง
wkl

3
pip.exe ใน windows จริง ๆ แล้วเป็นสคริปต์ไพ ธ อนเหมือนกับที่อื่น ๆ ในไดเรกทอรี / scripts แต่ถูกรวมไว้ใน exe เพื่อรันด้วยตัวแปลภาษาไพ ธ อนเริ่มต้น โดยการเปิด pip.exe ด้วย 7-zip คุณสามารถดูpip หลัก. py การนำเข้า sys และโมดูลใหม่ ... (และคุณจะพบคำตอบวิธีการเรียกใช้ภายในเชลล์ python) -> pip เป็นปกติ โมดูลหลาม อย่าลืม windows ไม่ใช่แพลตฟอร์มแรกที่รองรับหลาม, linux เคยเป็น, และมี python เป็นส่วนหนึ่งของระบบปฏิบัติการ.
Zydnar

1
ฉันรู้ว่าฉันต้องทำจากบรรทัดคำสั่ง (ไม่ใช่บรรทัดคำสั่งหลาม) นี่คือหลังจากเปลี่ยนไดเรกทอรีไปยังตำแหน่งของ python.exe แล้วจำเป็นต้องใส่ชนิดของไฟล์ใน pip3 ในกรณีของฉันฉันได้รับคำขอ HTTP หลังจากทำงาน คือ: python pip3.exe คำขอการติดตั้ง <--- มันทำงานได้อย่างสมบูรณ์แบบทำซ้ำเหมือนกันสำหรับโมดูล
pytz

106

ใช้บรรทัดคำสั่งไม่ใช่เชลล์ Python (DOS, PowerShell ใน Windows)

C:\Program Files\Python2.7\Scripts> pip install XYZ

หากคุณติดตั้ง Python ใน PATH โดยใช้โปรแกรมติดตั้งล่าสุดคุณไม่จำเป็นต้องอยู่ในโฟลเดอร์นั้นเพื่อเรียกใช้ pip

เทอร์มินัลใน Mac หรือ Linux

$ pip install XYZ

3
ขอบคุณที่รวม C: .... ช่วยให้ฉันรู้ว่าฉันต้องไปที่ใดเพราะคุณไม่สามารถเปิด command line และพิมพ์ pip ได้
hammythepig

2
FYI PATHฉันหลามติดตั้งผมก็ไม่ได้ตั้งค่า ฉันต้องทำด้วยตัวเองโดยชี้ไปที่เส้นทางการติดตั้งใน%APPDATA%
UuDdLrLrSs

61

ในฐานะที่เป็น @sinoroc แนะนำวิธีที่ถูกต้องในการติดตั้งแพคเกจผ่าน pip คือการใช้กระบวนการแยกจากกันตั้งแต่จุดเล็ก ๆ อาจทำให้เกิดการปิดด้ายหรืออาจจำเป็นต้องเริ่มต้นใหม่ของล่ามในการโหลดแพคเกจติดตั้งใหม่ดังนั้นนี้เป็นวิธีที่เหมาะสมของการใช้ API: subprocess.check_call([sys.executable, '-m', 'pip', 'install', 'SomeProject'])แต่เนื่องจากช่วยให้งูหลาม เพื่อเข้าถึง API ภายในและคุณรู้ว่าคุณกำลังใช้ API อะไรอยู่คุณอาจต้องการใช้ API ภายในเช่นกัน หากคุณกำลังสร้างตัวจัดการแพ็คเกจ GUI ของตัวเองโดยใช้ทรัพยากรอื่นเช่นhttps://www.lfd.uci.edu/~gohlke/pythonlibs/

การติดตามวิญญาณออกจากวันที่ DATE แทนที่จะเป็นการลงคะแนนเสียงแนะนำการอัปเดต ดูhttps://github.com/pypa/pip/issues/7498สำหรับการอ้างอิง


UPDATE : ตั้งแต่เวอร์ชั่น pip 10.xไม่มีมากขึ้นget_installed_distributions()หรือmainวิธีการภายใต้แทนการใช้งานimport pip import pip._internal as pip

อัปเดตแคลิฟอร์เนีย v.18 get_installed_distributions()ถูกลบแล้ว คุณสามารถใช้ตัวสร้างfreezeแบบนี้แทน:

from pip._internal.operations.freeze import freeze

print([package for package in freeze()])

# eg output ['pip==19.0.3']


หากคุณต้องการใช้ pip ภายในตัวแปลภาษา Python ลองทำดังนี้:

import pip

package_names=['selenium', 'requests'] #packages to install
pip.main(['install'] + package_names + ['--upgrade']) 
# --upgrade to install or update existing packages

หากคุณต้องการอัปเดตทุกแพ็คเกจที่ติดตั้งให้ใช้ดังต่อไปนี้:

import pip

for i in pip.get_installed_distributions():
    pip.main(['install', i.key, '--upgrade'])

หากคุณต้องการหยุดการติดตั้งแพ็คเกจอื่น ๆ หากการติดตั้งล้มเหลวให้ใช้ในการpip.main([])โทรครั้งเดียว:

import pip

package_names = [i.key for i in pip.get_installed_distributions()]
pip.main(['install'] + package_names + ['--upgrade'])

หมายเหตุ : เมื่อคุณติดตั้งจากรายการในไฟล์ที่มี-r/ --requirementพารามิเตอร์คุณไม่จำเป็นต้องเปิดฟังก์ชั่น ()

pip.main(['install', '-r', 'filename'])

คำเตือน : พารามิเตอร์บางที่ง่าย--helpอาจทำให้เกิดล่ามหลามหยุด

ความอยากรู้: โดยการใช้งานpip.exeคุณใช้ล่ามไพ ธ อนและโมดูล pip จริง ๆ หากคุณแกะpip.exeหรือพิจารณาpip3.exeว่าเป็นงูหลาม 2.x หรือ 3.x ภายในเป็นไฟล์เดียว SAME __main__.py:

# -*- coding: utf-8 -*-
import re
import sys

from pip import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

5
สิ่งนี้ใช้ได้ใน Python shell ดังนั้นฉันคิดว่าควรเป็นคำตอบที่ยอมรับได้
François M.

5
นี่คือสิ่งที่ฉันหวังว่าจะพบเมื่อ Googling ปัญหานี้
Andrew Brēza

1
คำตอบที่ดีและควรรวมอยู่ที่นี่อย่างแน่นอน แต่ฉันไม่เห็นด้วยควรเป็นคำตอบที่ยอมรับเนื่องจากผู้ใช้พยายามที่จะทำให้งาน "pip install" ที่แพร่หลายแพร่หลายในขณะนี้ เนื่องจากไวยากรณ์นั้นจะไม่ทำงานกับวิธีนี้จึงไม่สามารถแก้ปัญหาได้โดยตรง มันอาจจะมีประโยชน์มากกว่าคำตอบที่ยอมรับ :)
Dan

ไม่ทราบว่า OP หมายถึงอะไรจริง ๆ แต่คำตอบนี้เป็นคำตอบที่ล่าช้าดังนั้นจึงไม่สำคัญหากเป็นที่ยอมรับที่นี่
Zydnar

@Zydnar เห็นด้วย - คำตอบของฉันคือ Francois ที่กล่าวว่านี่ควรเป็นคำตอบที่ได้รับการยอมรับ ฉันโพสต์เหตุผลของฉันว่าทำไมไม่ ที่กล่าวว่าฉันยังคงคิดว่านี่เป็นโพสต์ที่ยอดเยี่ยม
ด่าน

53

เมื่อต้องการเรียกใช้ pip ในหลาม 3.x เพียงทำตามคำแนะนำบนหน้า ธ : การติดตั้งโมดูลหลาม

python -m pip install SomePackage

โปรดทราบว่าสิ่งนี้จะถูกเรียกใช้จากบรรทัดคำสั่งไม่ใช่ python shell (สาเหตุของข้อผิดพลาดทางไวยากรณ์ในคำถามเดิม)


1
ฉันยังคงได้รับไวยากรณ์ที่ไม่ถูกต้อง ฉันใช้ IPython กับพีซีที่ใช้ Windows 10 ความคิดใด ๆ
DataGirl

หน้านี้มีคำแนะนำสำหรับการติดตั้ง IPython: ipython.readthedocs.io/en/stable/install/index.html $ pip install ipython สันนิษฐานว่าจะแปลถึง $ หลาม -m pip ติดตั้ง ipython
แดน

1
สิ่งนี้จะไม่ตอบอะไรเกี่ยวกับข้อผิดพลาดทางไวยากรณ์
OneCricketeer

นี่มีคำตอบอื่น ๆ อยู่แล้ว แต่ฉันได้เพิ่มไว้ตอนนี้ คำตอบของฉันเป็นแค่อาหารเสริมสำหรับ 3.x
ด่าน

ทำงานให้ฉันบน windows 10 - นอกจากนี้ยังแนะนำให้ฉันไปอัพเกรด pip ตามความคิดเห็นก่อนหน้า :)
Kdean571

2

ตอนแรกฉันก็เจอปัญหาเดียวกันนี้ฉันติดตั้งไพ ธ อนและเมื่อฉันเรียกใช้pipคำสั่งมันก็ทำให้ฉันเกิดข้อผิดพลาดตามที่แสดงในรูปด้านล่าง

ป้อนคำอธิบายรูปภาพที่นี่

ตรวจสอบให้แน่ใจว่ามีการเพิ่มเส้นทาง pip ในตัวแปรด้านสิ่งแวดล้อม สำหรับฉันเส้นทางการติดตั้ง python และ pip ​​คือ ::
Python: C:\Users\fhhz\AppData\Local\Programs\Python\Python38\
pip: C:\Users\fhhz\AppData\Local\Programs\Python\Python38\Scripts
ทั้งสองพา ธ เหล่านี้ถูกเพิ่มเข้ากับพา ธ ในตัวแปรสภาพแวดล้อม

ตอนนี้เปิดหน้าต่าง cmd ใหม่และพิมพ์ pip คุณควรจะเห็นหน้าจอดังต่อไปนี้

ป้อนคำอธิบายรูปภาพที่นี่

pip install <<package-name>>ตอนนี้พิมพ์ ที่นี่ฉันกำลังติดตั้งแพ็คเกจ Spyder ดังนั้นคำสั่งบรรทัดคำสั่งของฉันจะเป็นpip install spyderและที่นี่ไปที่หน้าจอทำงานของฉัน

ป้อนคำอธิบายรูปภาพที่นี่

และฉันหวังว่าเราจะทำสิ่งนี้ด้วย !!


1
สิ่งนี้ไม่ตอบคำถาม
sinoroc

0

คุณต้องพิมพ์เป็น cmd ไม่ได้อยู่ใน IDLE becuse IDLE ไม่ใช่พรอมต์คำสั่งหากคุณต้องการติดตั้งบางอย่างจาก IDLE ให้พิมพ์สิ่งนี้

>>>from pip.__main__ import _main as main
>>>main(#args splitted by space in list example:['install', 'requests'])

นี่เรียก pip เหมือนpip <commands>ในเทอร์มินัล คำสั่งจะถูกคั่นด้วยช่องว่างที่คุณกำลังทำอยู่


นี่เป็นคำตอบที่ล้าสมัยตั้งแต่ประมาณ pip เวอร์ชั่น 10.0 ImportError: cannot import name mainใช้ pip v19.0.3
Zydnar

-1

โดยทางโปรแกรมปัจจุบันทำงานดังต่อไปนี้ ฉันเห็นคำตอบทั้งหมดโพสต์ 10.0 และทั้งหมด แต่ไม่มีคำตอบใดที่ถูกต้องสำหรับฉัน ภายใน Kaggle apporach นี้ใช้งานได้จริง

from pip._internal import main as _main

package_names=['pandas'] #packages to install
_main(['install'] + package_names + ['--upgrade']) 

ทำไมไม่ใช้ jusy: จาก pip .__ main__ import _main?
Matthijs990

-3

ลองอัปเกรด pip ด้วยคำสั่งด้านล่างแล้วลองอีกครั้ง

python -m pip install -U pip

การอัปเดตของ pip จะไม่ปล่อยให้มันทำงานในเปลือกงูหลาม
Matthijs990
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.