Een pip-pakket installeren vanuit een Jupyter Notebook werkt niet

Wanneer ik !pip install geocoderin Jupyter Notebook uitvoer, krijg ik dezelfde output als het uitvoeren van pip install geocoderin de terminal, maar het geocoder-pakket is niet beschikbaar wanneer ik het probeer om het te importeren.

Ik gebruik Ubuntu 14.04, Anaconda 4.0.0 en pip 8.1.2

Geocoder installeren:

!pip install geocoder
The directory '/home/ubuntu/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/home/ubuntu/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Collecting geocoder
  Downloading geocoder-1.15.1-py2.py3-none-any.whl (195kB)
    100% |████████████████████████████████| 204kB 3.2MB/s 
Requirement already satisfied (use --upgrade to upgrade): requests in /usr/local/lib/python2.7/dist-packages (from geocoder)
Requirement already satisfied (use --upgrade to upgrade): ratelim in /usr/local/lib/python2.7/dist-packages (from geocoder)
Requirement already satisfied (use --upgrade to upgrade): six in /usr/local/lib/python2.7/dist-packages (from geocoder)
Requirement already satisfied (use --upgrade to upgrade): click in /usr/local/lib/python2.7/dist-packages (from geocoder)
Requirement already satisfied (use --upgrade to upgrade): decorator in /usr/local/lib/python2.7/dist-packages/decorator-4.0.10-py2.7.egg (from ratelim->geocoder)
Installing collected packages: geocoder
Successfully installed geocoder-1.15.1

Probeer het dan te importeren:

import geocoder
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-4-603a981d39f2> in <module>()
----> 1 import geocoder
ImportError: No module named geocoder

Ik heb ook geprobeerd de notebook af te sluiten en opnieuw op te starten zonder succes.

Bewerken:ik ontdekte dat het gebruik van de terminal het geocoder-pakket in /home/ubuntu/.local/lib/python2.7/site-packagesinstalleert en een notebook installeert het in /usr/local/lib/python2.7/dist-packageswat niet in het pad staat. sys.path.append('/usr/local/lib/python2.7/dist-packages')lost het probleem voor de huidige sessie op.

Dus hoe kan ik het pad permanent wijzigen of pip vertellen waar ik geocoder moet installeren?


Antwoord 1, autoriteit 100%

! pip install --user <package>

De !vertelt de notebook om de cel uit te voeren als een shell-opdracht.


Antwoord 2, autoriteit 96%

In IPython (jupyter) 7.3 en later is er een magische opdracht %pipen %condadie in de huidige kernel wordt geïnstalleerd (in plaats van in de instantie van Python die de notebook lanceerde).

%pip install geocoder

In eerdere versies moet u sys gebruiken om het probleem op te lossen, zoals in het antwoord van FlyingZebra1

import sys
!{sys.executable} -m pip install geocoder

Antwoord 3, autoriteit 43%

%pip install fedex    #fedex = package name

in 2019.

In oudere versies van conda:

import sys
!{sys.executable} -m pip install fedex     #fedex = package name

*opmerking – u moet sys importeren


Antwoord 4, autoriteit 5%

In jupyter notebook onder python 3.6 werkt de volgende regel:

!source activate py36;pip install <...>

Antwoord 5, autoriteit 5%

Dit werkte voor mij in Jupyter nOtebook /Mac Platform /Python 3:

import sys
!{sys.executable} -m pip install -r requirements.txt

Antwoord 6, autoriteit 4%

Het probleem is dat pyarrowdoor pipwordt opgeslagen in dist-packages(in jouw geval /usr/local/lib/python2.7/dist-packages). Dit pad wordt overgeslagen door Jupyter, dus pipzal niet helpen.

Als oplossing raad ik aan om het eerste blok toe te voegen

import sys
sys.path.append('/usr/local/lib/python2.7/dist-packages')

of wat dan ook de pad- of pythonversie is. In het geval van Python 3.5 is dit

import sys
sys.path.append("/usr/local/lib/python3.5/dist-packages")

Antwoord 7

Probeer wat shell-magie te gebruiken: %%sh
%%sh pip install geocoder
laat me weten of het werkt, bedankt


Antwoord 8

Alternatieve optie:
je kunt ook een bash-cel in jupyter maken met bash-kernel en dan pip install geocoder. Dat zou moeten werken


Antwoord 9

Ik had hetzelfde probleem.

Ik vond deze instructies die voor mij werkten.

# Example of installing handcalcs directly from a notebook
!pip install --upgrade-strategy only-if-needed handcalcs

ref: https:/ /docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html

Er kunnen problemen optreden wanneer pip en conda samen worden gebruikt. Bij het combineren
conda en pip, is het het beste om een ​​geïsoleerde conda-omgeving te gebruiken. Alleen
nadat conda is gebruikt om zoveel mogelijk pakketten te installeren
moet pip worden gebruikt om de resterende software te installeren. Als wijzigingen
nodig zijn voor de omgeving, is het het beste om een ​​nieuwe omgeving te creëren
in plaats van conda na pip te laten lopen. Indien van toepassing, conda en pip
vereisten moeten worden opgeslagen in tekstbestanden.

We raden u aan:

Gebruik pip alleen na conda

Installeer zoveel mogelijk vereisten met conda en gebruik vervolgens pip.

Pip moet worden uitgevoerd met –upgrade-strategy only-if-needed (de standaardinstelling).

Gebruik pip niet met het –user argument, vermijd alle gebruikersinstallaties.


Antwoord 10

conda create -n py27 python=2.7 ipykernel

source activate py27

pip install geocoder

Antwoord 11

Het gebruik van pip2 werkte voor mij:

!pip2 install geocoder
...
import geocoder
g = geocoder.google('Mountain View, CA')
g.latlng
[37.3860517, -122.0838511]

Other episodes