पायथन के अंदर "पाइप इंस्टॉल" क्यों एक सिंटेक्स ईयरर को बढ़ाता है?


232

मैं एक पैकेज को स्थापित करने के लिए पाइप का उपयोग करने की कोशिश कर रहा हूं। मैं pip installपायथन शेल से चलने की कोशिश करता हूं , लेकिन मुझे ए SyntaxError। मुझे यह त्रुटि क्यों मिली? पैकेज को स्थापित करने के लिए मैं पाइप का उपयोग कैसे करूं?

>>> pip install selenium
              ^
SyntaxError: invalid syntax

जवाबों:


297

पाइप को कमांड लाइन से चलाया जाता है, न कि पायथन इंटरप्रेटर। यह एक प्रोग्राम है जो मॉड्यूल स्थापित करता है , इसलिए आप उन्हें पायथन से उपयोग कर सकते हैं। एक बार जब आप मॉड्यूल स्थापित कर लेते हैं, तो आप पायथन शेल खोल सकते हैं और कर सकते हैं import selenium

पायथन शेल एक कमांड लाइन नहीं है, यह एक इंटरएक्टिव इंटरप्रेटर है। आप इसमें पायथन कोड टाइप करते हैं, कमांड नहीं।


2
स्पष्टीकरण के लिए धन्यवाद, लेकिन मैं अभी भी इसे चलाने के लिए नहीं मिल सकता। वास्तव में कहां है? यह मुझे एक "पाइप मान्यता प्राप्त नहीं है" त्रुटि दे रहा है (क्योंकि मैं सही डायर नहीं हूं)। यह \ साइट-संकुल में स्थापित किया गया था, लेकिन मैं यह सोचा देख रहा हूँ और मैं किसी भी pip.exe नहीं मिल रहा है
रात

25
@Nacht - pipआपके पायथन इंस्टॉलेशन की स्क्रिप्ट डायरेक्टरी में होगा ताकि आप इसे अपने पथ पर जोड़ना चाहेंगे। C:\Python32\scriptsअपने में जोड़ें PATH। जहाँ आपने इसे स्थापित किया है, उसके आधार पर आवश्यक रूप से पथ बदलें।
wkl

3
वास्तव में windows में pip.exe एक python script है, जो अन्य / लिपियों की निर्देशिका में है, लेकिन इसे डिफ़ॉल्ट python दुभाषिया के साथ चलाने के लिए exe में लपेटा गया है। 7-ज़िप के साथ pip.exe खोलकर आप मुख्य .py आयात पाइप, sys और पुनः मॉड्यूल देख सकते हैं ... (और वहाँ आपको जवाब मिलेगा कि इसे पायथन शेल के भीतर कैसे चलाना है) -> पाइप एक नियमित है अजगर मॉड्यूल। यह मत भूलो कि खिड़कियां पहले प्लेटफॉर्म का समर्थन नहीं कर रही थीं, लिनेक्स था, और वहां अजगर ओएस का एक हिस्सा है।
Zydnar

1
मुझे पता है कि मुझे कमांड लाइन से नहीं (पायथन कमांड लाइन से) ऐसा करना था। यह निर्देशिका को python.exe के स्थान में बदलने के बाद था और फिर इसे pip3 पर फ़ाइल प्रकार डालने की आवश्यकता थी। मेरे मामले में मैं HTTP काम के लिए अनुरोध के बाद था। अर्थात्: अजगर pip3.exe अनुरोध स्थापित करें --- --- यह पूरी तरह से काम किया, pytz मॉड्यूल के लिए एक ही दोहराया
nt3

106

कमांड लाइन का उपयोग करें, न कि पायथन शेल (विंडोज में डॉस, पावरशेल)।

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

यदि आपने नवीनतम इंस्टॉलरों का उपयोग करके अपने PATH में पायथन स्थापित किया है, तो आपको पाइप चलाने के लिए उस फ़ोल्डर में रहने की आवश्यकता नहीं है

मैक या लिनक्स में टर्मिनल

$ pip install XYZ

3
सी को शामिल करने के लिए धन्यवाद: ...., मुझे यह महसूस करने में मदद की कि मुझे कहां की जरूरत है क्योंकि आप बस कमांड लाइन खोल सकते हैं और पाइप टाइप कर सकते हैं।
हम्मतेपिग

2
FYI करें मैं पायथन स्थापित करता हूं मैंने अभी सेट नहीं किया है PATH। मुझे इसे मैन्युअल रूप से करना था, स्थापित पथ की ओर इशारा करते हुए%APPDATA%
UuDdLrLrSs

61

जैसा कि @sinoroc ने पाइप के माध्यम से एक पैकेज को स्थापित करने का सही तरीका सुझाया है क्योंकि पाइप एक थ्रेड को बंद करने का कारण हो सकता है या नए स्थापित पैकेज को लोड करने के लिए दुभाषिया को फिर से शुरू करने की आवश्यकता हो सकती है, इसलिए यह एपीआई का उपयोग करने का सही तरीका है: subprocess.check_call([sys.executable, '-m', 'pip', 'install', 'SomeProject'])लेकिन चूंकि पायथन अनुमति देता है आंतरिक एपीआई का उपयोग करने के लिए और आप जानते हैं कि आप एपीआई का उपयोग कर रहे हैं, आप वैसे भी आंतरिक एपीआई का उपयोग करना चाहते हैं। अगर आप https://www.lfd.uci.edu/~gohlke/pythonlibs/ जैसे वैकल्पिक रिसोर्स के साथ अपना GUI पैकेज मैनेजर बना रहे हैं

निम्नलिखित सुझाव देने के बजाय आत्मा का पालन करना DATE का DUT है। संदर्भ के लिए https://github.com/pypa/pip/issues/7498 देखें ।


अद्यतन : पाइप संस्करण 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']


यदि आप पायथन इंटरप्रेटर के अंदर पाइप का उपयोग करना चाहते हैं, तो यह प्रयास करें:

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.exeया pip3.exeपरवाह किए बिना यह अजगर 2.x या 3.x है, तो अंदर एक ही फाइल है __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
यह पायथन शेल में काम करता है, इसलिए मुझे लगता है कि यह स्वीकृत उत्तर होना चाहिए।
फ्रांकोइस एम।

5
यह वही है जो मैं इस समस्या को गूग्लिंग करते समय खोजने की उम्मीद कर रहा था।
एंड्रयू ब्रूजा

1
शानदार उत्तर, और इसे निश्चित रूप से यहां शामिल किया जाना चाहिए, लेकिन मैं इससे सहमत नहीं होना चाहिए कि यह स्वीकृत उत्तर होना चाहिए, क्योंकि उपयोगकर्ता स्पष्ट रूप से अब सर्वव्यापी सिंटैक्स "पाइप इंस्टॉल" कार्य करने की कोशिश कर रहा था। चूंकि सिंटैक्स इस पद्धति से काम नहीं करेगा, इसलिए यह सीधे उस मुद्दे को हल नहीं करता है। यह स्वीकृत उत्तर की तुलना में अधिक उपयोगी हो सकता है: :)
दान

पता नहीं कि वास्तव में ओपी का मतलब क्या था, लेकिन यह जवाब वास्तव में देर से जवाब था, इसलिए यह महत्वपूर्ण नहीं है अगर इसे यहां स्वीकार किया जाए।
ज़ेडनार

@ ज़ेडनार, सहमत - मेरी प्रतिक्रिया फ्रेंकोइस के लिए थी, जिन्होंने कहा कि यह स्वीकृत उत्तर होना चाहिए। मैंने अपना तर्क पोस्ट किया कि क्यों नहीं। उस ने कहा, मुझे अभी भी लगता है कि यह एक बेहतरीन पोस्ट है।
Dan

53

पायथन 3.x में पाइप चलाने के लिए, केवल पायथन के पृष्ठ पर दिए गए निर्देशों का पालन करें: पायथन मॉड्यूल्स को स्थापित करना

python -m pip install SomePackage

ध्यान दें कि यह कमांड लाइन से चलाया जाता है न कि पाइथन शेल (मूल प्रश्न में वाक्यविन्यास त्रुटि का कारण)।


1
मुझे अभी भी अमान्य सिंटैक्स प्राप्त हो रहा है। मैं विंडोज 10 पीसी पर आईपीथॉन का उपयोग कर रहा हूं। कोई विचार?
डाटागर्ल

इस पृष्ठ में IPython: ipython.readthedocs.io/en/stable/install/index.html $ pip install ipython स्थापित करने के निर्देश हैं । मुमकिन है कि $ python के लिए अनुवाद होगा -m पाइप स्थापित ipython
दान

1
यह वाक्य रचना त्रुटि के बारे में कुछ भी उत्तर नहीं देता है
OneCricketeer

यह पहले से ही अन्य उत्तरों द्वारा कवर किया गया था, लेकिन मैंने इसे अब जोड़ दिया। मेरा जवाब सिर्फ 3.x के लिए एक पूरक था।
दान

मेरे लिए विंडोज़ 10 पर काम किया - मुझे पिछली टिप्पणी के अनुसार पाइप अपग्रेड करने की भी सलाह दी :)
Kdean571

2

शुरू में मुझे भी इसी समस्या का सामना करना पड़ा, मैंने अजगर को स्थापित किया और जब मैं pipकमांड चलाता था तो वह मुझे एक त्रुटि फेंक देता था जैसे कि नीचे दी गई तस्वीर में दिखाया गया है।

यहां छवि विवरण दर्ज करें

Make Sure pip path को पर्यावरणीय चर में जोड़ा गया है। मेरे लिए, अजगर और पाइप स्थापना पथ ::
पायथन: C:\Users\fhhz\AppData\Local\Programs\Python\Python38\
पाइप: C:\Users\fhhz\AppData\Local\Programs\Python\Python38\Scripts
इन दोनों रास्तों को पर्यावरणीय चर में पथ में जोड़ा गया है।

अब एक नई cmd विंडो खोलें और पाइप टाइप करें, आपको नीचे एक स्क्रीन दिखाई देनी चाहिए।

यहां छवि विवरण दर्ज करें

अब टाइप करें pip install <<package-name>>। यहां मैं पैकेज स्पाइडर स्थापित कर रहा हूं, इसलिए मेरी कमांड लाइन स्टेटमेंट होगी pip install spyderऔर यहां मेरी रनिंग स्क्रीन है।

यहां छवि विवरण दर्ज करें

और मुझे आशा है कि हम इस के साथ कर रहे हैं !!


1
इस सवाल का जवाब नहीं है।
सिनोरोक

0

आपको इसे IDLE में नहीं cmd ​​में टाइप करना होगा। अगर आप IDLE प्रकार से कुछ स्थापित करना चाहते हैं तो becuse IDLE एक कमांड प्रॉम्प्ट नहीं है

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

यह pip <commands>टर्मिनल में पाइप की तरह बुला रहा है । आदेशों को रिक्त स्थान द्वारा अलग किया जाएगा जो आप वहां कर रहे हैं।


यह पाइप संस्करण 10.0 के बारे में पुराना उत्तर है। ImportError: cannot import name mainपाइप v19.0.3 का उपयोग कर
Zydnar

-1

प्रोग्रामेटिक रूप से, निम्नलिखित वर्तमान में काम करता है। मैं सभी उत्तर 10.0 और सभी पोस्ट देखता हूं, लेकिन उनमें से कोई भी मेरे लिए सही रास्ता नहीं है। सुनिश्चित करने के लिए केगल के भीतर, यह एपोरच काम करता है

from pip._internal import main as _main

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

क्यों न जस्सी का उपयोग करें: पाइप से .__ main__ आयात _main?
Matthijs990

-3

नीचे दिए गए कमांड के साथ अपग्रेड पाइप का प्रयास करें और फिर से प्रयास करें

python -m pip install -U pip

पाइप वोंट का एक अद्यतन यह अजगर खोल में काम करते हैं
Matthijs990
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.