Mengapa "pip install" di dalam Python meningkatkan SyntaxError?

232

Saya mencoba menggunakan pip untuk menginstal paket. Saya mencoba untuk menjalankan pip installdari shell Python, tetapi saya mendapatkan SyntaxError. Mengapa saya mendapatkan kesalahan ini? Bagaimana cara menggunakan pip untuk menginstal paket?

>>> pip install selenium
              ^
SyntaxError: invalid syntax
Nacht
sumber

Jawaban:

297

pip dijalankan dari baris perintah, bukan interpreter Python. Ini adalah program yang memasang modul, sehingga Anda dapat menggunakannya dari Python. Setelah Anda menginstal modul, maka Anda dapat membuka shell Python dan melakukannya import selenium.

Shell Python bukan baris perintah, itu adalah interpreter interaktif. Anda mengetik kode Python ke dalamnya, bukan perintah.

Lennart Regebro
sumber
2
Terima kasih atas klarifikasi, tetapi saya masih belum bisa menjalankannya. Di mana tepatnya itu? Itu memberi saya kesalahan "pip tidak dikenali" (karena saya bukan dir kanan). Itu diinstal di \ situs-paket tetapi saya mencari pikir itu dan saya tidak dapat menemukan pip.exe
Nacht
25
@Nacht - pipakan berada di direktori skrip instalasi python Anda sehingga Anda ingin menambahkannya ke jalur Anda. Tambahkan C:\Python32\scriptske PATH. Ubah jalur yang diperlukan berdasarkan tempat Anda menginstalnya.
wkl
3
Sebenarnya pip.exe di windows adalah skrip python seperti yang lainnya di direktori / skrip, tetapi dibungkus dengan exe untuk menjalankannya dengan penerjemah python default. Dengan membuka pip.exe dengan 7-zip Anda dapat melihat modul utama .py mengimpor pip, sys dan re ... (Dan di sana Anda akan menemukan jawaban bagaimana menjalankannya di dalam shell python) -> pip adalah biasa modul python. Jangan lupa windows bukan platform pertama yang mendukung python, linux dulu, dan ada python yang merupakan bagian dari OS.
Zydnar
1
Saya tahu saya harus melakukan ini dari baris perintah (bukan baris perintah python). Ini setelah mengubah direktori ke lokasi python.exe dan kemudian perlu meletakkan jenis file pada pip3. Dalam kasus saya, saya mencari permintaan untuk pekerjaan HTTP. Yaitu: permintaan instalasi python pip3.exe <--- ini bekerja dengan sempurna, mengulangi hal yang sama untuk modul
pytz
106

Gunakan baris perintah, bukan shell Python (DOS, PowerShell di Windows).

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

Jika Anda menginstal Python ke PATH Anda menggunakan installer terbaru, Anda tidak perlu berada di folder itu untuk menjalankan pip

Terminal di Mac atau Linux

$ pip install XYZ
ruxming
sumber
3
Terima kasih telah menyertakan C: ...., membantu saya menyadari di mana saya perlu melakukan cd karena Anda tidak dapat membuka baris perintah dan mengetikkan pip.
hammythepig
2
FYI saya menginstal Python saya hanya TIDAK mengatur PATH. Saya harus melakukan ini secara manual, menunjuk ke jalur instal di%APPDATA%
UuDdLrLrSs
61

Seperti @sinoroc menyarankan cara yang benar untuk menginstal paket melalui pip menggunakan proses terpisah karena pip dapat menyebabkan penutupan utas atau mungkin memerlukan restart penerjemah untuk memuat paket yang diinstal baru jadi ini adalah cara yang tepat untuk menggunakan API: subprocess.check_call([sys.executable, '-m', 'pip', 'install', 'SomeProject'])tetapi karena Python mengizinkan untuk mengakses API internal dan Anda tahu apa yang Anda gunakan API untuk Anda mungkin ingin menggunakan API internal misalnya. jika Anda membangun manajer paket GUI sendiri dengan sumber daya alternatif seperti https://www.lfd.uci.edu/~gohlke/pythonlibs/

Mengikuti soulution adalah OUT OF DATE, bukannya downvoting menyarankan pembaruan. lihat https://github.com/pypa/pip/issues/7498 untuk referensi.


UPDATE : Sejak versi pip 10.x tidak ada lagi get_installed_distributions()atau mainmetode di bawah import pip bukan menggunakan import pip._internal as pip .

PEMBARUAN ca. v.18 get_installed_distributions() telah dihapus. Sebagai gantinya, Anda dapat menggunakan generator freezeseperti ini:

from pip._internal.operations.freeze import freeze

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

# eg output ['pip==19.0.3']


Jika Anda ingin menggunakan pip di dalam interpreter Python, coba ini:

import pip

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

Jika Anda perlu memperbarui setiap paket yang diinstal, gunakan yang berikut ini:

import pip

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

Jika Anda ingin berhenti menginstal paket lain jika ada instalasi yang gagal, gunakan dalam satu pip.main([])panggilan:

import pip

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

Catatan : Ketika Anda menginstal dari daftar dalam file dengan -r/ --requirementparameter Anda TIDAK perlu fungsi open ().

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

Peringatan : Beberapa parameter sesederhana --helpmungkin menyebabkan interpreter python berhenti.

Keingintahuan: Dengan menggunakan pip.exeAnda sebenarnya menggunakan interpreter python dan modul pip. Jika Anda membongkar pip.exeatau pip3.exemengabaikannya python 2.x atau 3.x, di dalamnya adalah file tunggal SAMA __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())
Zydnar
sumber
5
Ini berfungsi di shell Python, jadi saya pikir itu harus menjadi jawaban yang diterima.
François M.
5
Inilah tepatnya yang saya harapkan saat mencari masalah ini di Google.
Andrew Brēza
1
Jawaban yang bagus, dan itu pasti harus dimasukkan di sini, tapi saya tidak setuju itu harus menjadi jawaban yang diterima, karena pengguna jelas berusaha membuat sintaksis yang sekarang ada di mana-mana "instalasi pipa" berfungsi. Karena sintaks itu tidak akan berfungsi dengan metode ini, itu tidak langsung menyelesaikan masalah itu. Mungkin lebih bermanfaat daripada jawaban yang diterima :)
Dan
Tidak tahu apa yang sebenarnya dimaksud oleh OP, tapi jawaban ini benar-benar terlambat, jadi tidak penting jika diterima di sini.
Zydnar
@ Zydnar, setuju - tanggapan saya kepada Francois, yang mengatakan ini harus menjadi jawaban yang diterima. Saya memposting alasan saya mengapa tidak. Yang mengatakan, saya masih berpikir ini adalah pos yang bagus.
Dan
53

Untuk menjalankan pip di Python 3.x, cukup ikuti instruksi pada halaman Python : Menginstal Modul Python .

python -m pip install SomePackage

Perhatikan bahwa ini dijalankan dari baris perintah dan bukan shell python (alasan untuk kesalahan sintaks dalam pertanyaan awal).

Dan
sumber
1
Saya masih menerima sintaks yang tidak valid. Saya menggunakan IPython pada PC Windows 10. Adakah pikiran?
DataGirl
Halaman ini memiliki petunjuk untuk menginstal IPython: ipython.readthedocs.io/en/stable/install/index.html $ pip install ipython. Agaknya itu akan diterjemahkan ke $ python -m pip install ipython
Dan
1
Ini tidak menjawab apa pun tentang kesalahan sintaksis
OneCricketeer
Ini sudah dicakup oleh jawaban lain, tetapi saya menambahkannya sekarang. Jawaban saya hanyalah suplemen untuk 3.x.
Dan
bekerja untuk saya di windows 10 - juga menyarankan saya untuk meningkatkan pip sesuai komentar sebelumnya :)
Kdean571
2

Awalnya saya juga menghadapi masalah yang sama, saya menginstal python dan ketika saya menjalankan pipperintah itu digunakan untuk melemparkan saya kesalahan seperti yang ditunjukkan pada gambar di bawah.

masukkan deskripsi gambar di sini

Pastikan jalur pip ditambahkan dalam variabel lingkungan. Bagi saya, jalur instalasi python dan pip adalah ::
Python: C:\Users\fhhz\AppData\Local\Programs\Python\Python38\
pip: C:\Users\fhhz\AppData\Local\Programs\Python\Python38\Scripts
Kedua path ini ditambahkan ke path dalam variabel lingkungan.

Sekarang Buka jendela cmd baru dan ketik pip, Anda akan melihat layar seperti di bawah ini.

masukkan deskripsi gambar di sini

Sekarang ketik pip install <<package-name>>. Di sini saya menginstal spyder paket sehingga pernyataan baris perintah saya akan seperti pip install spyderdan di sini layar saya berjalan ..

masukkan deskripsi gambar di sini

dan saya harap kita selesai dengan ini !!

pak lelaki
sumber
1
Ini tidak menjawab pertanyaan.
sinoroc
0

Anda harus mengetikkannya dalam cmd bukan di IDLE. becuse IDLE bukan prompt perintah jika Anda ingin menginstal sesuatu dari IDLE ketik ini

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

ini memanggil pip seperti pip <commands>di terminal. Perintah akan dipisahkan oleh spasi yang Anda lakukan di sana.

Matthijs990
sumber
Ini adalah jawaban yang ketinggalan jaman karena sekitar pip versi 10.0. ImportError: cannot import name mainmenggunakan pip v19.0.3
Zydnar
-1

Secara pemrograman, berikut ini berfungsi. Saya melihat semua jawaban posting 10.0 dan semua, tetapi tidak satupun dari mereka adalah jalur yang benar untuk saya. Di dalam Kaggle pasti, apporach ini berfungsi

from pip._internal import main as _main

package_names=['pandas'] #packages to install
_main(['install'] + package_names + ['--upgrade']) 
demongolem
sumber
mengapa tidak jusy gunakan: dari pip .__ main__ import _main?
Matthijs990
-3

Coba perbarui pip dengan perintah di bawah ini dan coba lagi

python -m pip install -U pip
Karthik
sumber
pembaruan pip tidak akan berfungsi dalam shell python
Matthijs990