Pip3 ImportError चल रहा है: 'मुख्य' नाम आयात नहीं कर सकता


21

मैं Scipy (पहले से ही Numpy स्थापित है) स्थापित करना चाहता हूँ। मेरे पास OS और IDLE3 (3.5.2) के साथ Python 3.5.1-3 स्थापित है। जब मैं टर्मिनल में मारा

sudo pip3 install scipy

यह प्रिंट करता है

Traceback (most recent call last):
File "/usr/bin/pip3", line 9, in <module>
from pip import main
ImportError: cannot import name 'main'

मैंने पहले से ही पाइप 3 को फिर से इंस्टॉल करने और ओएस को पुनरारंभ करने का प्रयास किया है, लेकिन यह नहीं बदला। क्या पाइप 3 किसी और के साथ अजीब तरह से काम कर रहा है?

जवाबों:


10

numpy और scipy उबंटू के सभी वर्तमान समर्थित संस्करणों के डिफ़ॉल्ट रिपॉजिटरी में हैं। Python 3.x के लिए सुन्न और डरावना स्थापित करने के लिए टर्मिनल खोलें और टाइप करें:

sudo apt update    
sudo apt install python3-numpy python3-scipy  

पायथन 2.x के लिए:

sudo apt update  
sudo apt install --no-install-recommends python2.7-minimal python2.7 # this line is only necessary for Ubuntu 17.10 and later 
sudo apt install python-numpy python-scipy

1
python3-scipy ने ठीक काम किया। धन्यवाद!
उल्टा हॉग डॉग

1
जैसा कि एक अन्य उत्तर में कहा गया है, यह उत्तर अंतर्निहित मुद्दे से संबंधित नहीं है, जिसे पाइप के साथ करना है।
cjauvin

यह बुरा तरीका है ...
darkwoolf

26

के python -m pip installबजाय का उपयोग करेंpip install

उदाहरण:

python -m pip install --user somepackage
python3 -m pip install --user somepackage

मुझे pipअपग्रेड के बाद यह समस्या होने लगी :

pip install --upgrade --user pip

pip(Resp। pip3) निष्पादन अपने distro (द्वारा प्रदान की गई python-pipउबंटू 16.04 पर पैकेज)।

इसलिए, pipपाइप को अपग्रेड करते समय पैकेज के साथ इसे अद्यतित नहीं रखा जाता है , और टूट सकता है।

यदि आप python -m pipसीधे उपयोग करते हैं, जैसे:

python -m pip install --user somepackage
python3 -m pip install --user somepackage

यह आपके पायथन पथ से गुजरता है और पाइप के नवीनतम संस्करण को खोजता है, और उस फ़ाइल को निष्पादित करता है।

यह इस तथ्य पर निर्भर करता है कि वह फ़ाइल निष्पादन योग्य है, लेकिन यह एक बहुत ही मानक प्रकार का इंटरफ़ेस है, और इसलिए हैकर डेबियन स्क्रिप्ट की तुलना में कम टूटने की संभावना है।

फिर मैं आपको निम्नलिखित उपनाम जोड़ने की सलाह देता हूं .bashrc:

pip() ( python -m pip "$@" )
pip3() ( python3 -m pip "$@" )

Ubuntu 18.04 /usr/bin/pip3फ़ाइल करता है:

from pip import main

और संभवतया कुछ बिंदु mainसे हटा दिया गया था pipजो कि चीजों को तोड़ दिया गया है।

ब्रेकिंग पाइप कमिट प्रतीत होता है: 95bcf8c5f6394298035a7332c441868f3b0169f4 "सभी आंतरिक API को pip._internal पर ले जाएं" जो कि पाइप 18.0 में चला गया।

pip39.0.1 से 18.0 तक के अपडेट के बाद उबंटू 16.04 में परीक्षण किया गया ।

pyenv

हालांकि, गंभीर अजगर विकास के लिए, मैं सिर्फ यह सलाह दूंगा कि आप अपने स्थानीय पायथन को pyenv + virtualenv के साथ स्थापित करें, जो इस उबंटू बग के आसपास भी मिलेगा: मैं apt-get का उपयोग करके एक अलग पायथन संस्करण कैसे स्थापित करूं?


1
तो यह काम करता है, लेकिन मैं केवल एक ही नहीं हो सकता, जो यहां अपना सिर हिला रहा है। टूटना कहाँ है? डिफ़ॉल्ट पाइप अपग्रेड नए पाइप को एक तरह से सेट करने में विफल क्यों होता है, जिससे यह काम करना जारी रखता है?
स्टीवन लू

@StevenLu मेरी समझ यह है कि /usr/bin/pipउबंटू पायथन पैकेज द्वारा प्रदान किया गया है, और pipइसे अधिलेखित नहीं करता है। लेकिन स्वयं pip updateद्वारा प्रबंधित किया जाता pipहै, और उबंटू फ़ाइलों को छूने से बचा जाता है।
सिरो सेंटिल्ली 新疆 i iro i 事件

हाय हो वही अनुभव यहाँ। पिप 3 काम नहीं करेगा जो मैंने किया। यह समाधान काम करता है, लेकिन कैसे आए ?? अजगर पाइप स्क्रिप्ट द्वारा तैयार किया गया है Debian- टिप्पणी कहती है: Run the main entry point, similarly to how setuptools does it, but because we didn't install the actual entry point from setup.py, don't use the pkg_resources API. शायद अजगर में ठीक से पायथन को स्थापित करने का एक तरीका है।
होगा

@ मुझे उस दस्तावेज टिप्पणी के बारे में निश्चित नहीं है, लेकिन मुझे यकीन है कि कोड क्या /usr/bin/pipहै :-)
Ciro Santilli 中心 sure sure sure

20

बग पाइप 10.0.0 में पाया जाता है।

लिनक्स में आपको फ़ाइल को संशोधित करने की आवश्यकता है: / usr / bin / pip से:

from pip import main
if __name__ == '__main__':
    sys.exit(main())

इसके लिए:

from pip import __main__
if __name__ == '__main__':
    sys.exit(__main__._main())

वर्कअराउंड की यह शैली टीम द्वारा अनुशंसित नहीं लगती हैpip
jdk1.0

आपने मेरा दिन बचाया !!
सौरभ सिंह

8

मैं एक ही समस्या थी, लेकिन स्थापना रद्द करें और उपयुक्त और मेरे साथ काम नहीं किया था।

मैंने एक और समाधान देखा जो pip3 पथ को पुनर्प्राप्त करने का एक आसान तरीका प्रस्तुत करता है:

sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall

इसने मेरे पाइप के संस्करण को 19.0.3 से 8.1.1 तक डाउनग्रेड किया, लेकिन इसने लक्षण को ठीक कर दिया।
हॉकआई पार्कर

6

हालांकि कैरेल ने आपकी "इंस्टॉल की गई सुन्न और डरावनी" समस्या को हल किया हो सकता है, आपके सिस्टम पर पाइप के साथ क्या गलत है, इसे संबोधित नहीं किया गया है, इसलिए आपको संभवतः आगे बढ़ने वाली पाइप के साथ और अधिक समस्याएं होंगी।

यहाँ देखते हुए , यह Ubuntu सिस्टम पर पाइप 10 के साथ एक बहुत ही सामान्य हालिया मुद्दा लगता है। आपको उस थ्रेड पर कुछ काम मिल सकता है जो आपके लिए काम करता है, लेकिन उम्मीद है कि एक अपडेट जल्द ही इसे ठीक कर देगा।


वास्तव में समस्या को ठीक करने के लिए और काम को न देने के लिए धन्यवाद, जो केवल समस्या को आंशिक रूप से और केवल एक व्यक्ति के लिए हल करता है ...
कालेब फेंटन

3

उपयुक्त और पाइप दोनों से पाइप स्थापित करने से यह हो सकता है।

मेरे मामले में, मैंने पिपनव को स्थापित करने के लिए उबंटू के पिप पैकेज का इस्तेमाल किया, जिसने तब पाइप की एक नई प्रति स्थापित की। अब क्योंकि मेरा शेल उबंटू की पाइप 9 स्क्रिप्ट (रन को सत्यापित करने के लिए which pip3) और मेरे पायथन इंटरप्रिटर पाइप 10 मॉड्यूल को आयात करता है, तो pip3 कमांड विफल हो जाता है। इसलिए मैं दोनों में से एक को अनइंस्टॉल करना चाहता हूं।

यह मान लेना उचित है कि आपके पास एक कारण के लिए नया पाइप है। उस स्थिति में आप पुराने पाइप को अनइंस्टॉल करना चाहते हैं:

sudo apt remove python3-pip

यदि आप यह जानते हैं कि आप पुराने पाइप के साथ ठीक हैं और सिस्टम पैकेज पसंद करते हैं, तो आप नए की स्थापना रद्द करना चाहेंगे:

~/.local/bin/pip3 uninstall pip

या असफल रहा है

sudo /usr/local/bin/pip3 uninstall pip


1

प्रकार

hash -d pip3

यह इस त्रुटि को दूर करना चाहिए


3
क्या आप अपने उत्तर पर अधिक स्पष्टीकरण दे सकते हैं: 'हैश' क्या है और यह त्रुटि क्यों दूर करेगा?
मार्क वॉनहोमिसन

1

इस github पृष्ठ पर दिखाए गए अनुसार अधिकांश उपयोगकर्ताओं के लिए पाइप को फिर से स्थापित करने का कार्य ठीक है :

python -m pip install --force-reinstall pip

धन्यवाद। पिछले सभी उत्तर बुरी तरह से विफल रहे, जबकि आपका काम
पाइनचिया

0

मेरा मुद्दा python3.6 और 3.7 के बीच एक बेमेल होने के रूप में समाप्त हुआ। Python3.6 इंस्टॉलेशन ने /usr/bin/python3 -> /usr/bin/python3.6सिस्टम में python3.7 में अपग्रेड होने के बावजूद एक लिंक डाल दिया ।

sudo apt purge python-pip
sudo apt purge python3-pip
sudo apt install python3.7 --reinstall
cd /usr/bin
sudo rm python3
sudo ln -s python3.7 python3
python3 --version
pip3 --version

-1

यह मेरे लिए काम किया:

pip install --upgrade --user pip

द्वारा install --upgrade, मेरा मतलब है कि आप जो भी स्थापित करने की कोशिश कर रहे हैं।

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