Kai bandau įdiegti bet kokį paketą naudodamas pip, gaunu šią importo klaidą:
guru@guru-notebook:~$ pip3 install numpy
Traceback (most recent call last):
File "/usr/bin/pip3", line 9, in <module>
from pip import main
ImportError: cannot import name 'main'
guru@guru-notebook:~$ cat `which pip3`
#!/usr/bin/python3
# GENERATED BY DEBIAN
import sys
# 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.
from pip import main
if __name__ == '__main__':
sys.exit(main())
Anksčiau jis veikė gerai, nesu tikras, kodėl jis išmeta šią klaidą. Ieškojau informacijos apie šią klaidą, bet nieko neradau, kaip ją ištaisyti.
Praneškite man, jei reikia išsamesnės informacijos, atnaujinsiu savo klausimą.
Turbūt netyčia atnaujinote savo sistemos pip (tikriausiai per kažką panašaus į sudo pip install pip --upgrade
)
pip 10.x pakoreguoja savo vidinių funkcijų vietą. pip3
komanda, kurią matote, yra jūsų paketų prižiūrėtojo (tikriausiai debian pagrindu?) pateikta komanda, o ne pip valdomas failas.
Daugiau apie tai galite paskaityti pip's issue tracker
Tikriausiai norėsite neatnaujinti savo sistemos pip, o naudoti virtualenv.
Norėdami atkurti pip3
dvejetainį failą, turėsite sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall
.
Jei norite tęsti darbą "nepalaikomoje teritorijoje" (atnaujinti sistemos paketą ne per sistemos paketų tvarkyklę), tikriausiai galite išsisukti su python3 -m pip ...
vietoj pip3
.
Patikrinkite, ar pip buvo įrašytas į talpyklą kitame kelyje, tam iškvieskite $ which pip ir patikrinkite, ar kelias skiriasi nuo klaidoje nurodyto kelio, jei taip, paleiskite:
$ hash -r
Kai talpykla bus išvalyta, pip vėl veiks. nuoroda: http://cheng.logdown.com/posts/2015/06/14/-usr-bin-pip-no-such-file-or-directory
Aš naudoju sudo apt remove python3-pip
, tada pip
veikia.
~ sudo pip install pip --upgrade
[sudo] password for sen:
Traceback (most recent call last):
File "/usr/bin/pip", line 9, in <module>
from pip import main
ImportError: cannot import name 'main'
➜ ~ sudo apt remove python3-pip
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
libexpat1-dev libpython3-dev libpython3.5-dev python-pip-whl python3-dev python3-wheel
python3.5-dev
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
python3-pip
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 569 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 215769 files and directories currently installed.)
Removing python3-pip (8.1.1-2ubuntu0.4) ...
Processing triggers for man-db (2.7.5-1) ...
➜ ~ pip
Usage:
pip <command> [options]