Hoe kan ik pakketten installeren met pip volgens het requirements.txt-bestand uit een lokale map?

Dit is het probleem:

Ik heb een requirements.txt-bestand dat er als volgt uitziet:

BeautifulSoup==3.2.0
Django==1.3
Fabric==1.2.0
Jinja2==2.5.5
PyYAML==3.09
Pygments==1.4
SQLAlchemy==0.7.1
South==0.7.3
amqplib==0.6.1
anyjson==0.3
...

Ik heb een lokale archiefmap met alle pakketten + andere.

Ik heb een nieuwe virtualenv gemaakt met

bin/virtualenv testing

Toen ik het activeerde, probeerde ik de pakketten te installeren volgens requirements.txt vanuit de lokale archiefmap.

source bin/activate
pip install -r /path/to/requirements.txt -f file:///path/to/archive/

Ik heb wat output die lijkt aan te geven dat de installatie in orde is:

Downloading/unpacking Fabric==1.2.0 (from -r ../testing/requirements.txt (line 3))
  Running setup.py egg_info for package Fabric
    warning: no previously-included files matching '*' found under directory 'docs/_build'
    warning: no files found matching 'fabfile.py'
Downloading/unpacking South==0.7.3 (from -r ../testing/requirements.txt (line 8))
  Running setup.py egg_info for package South
....

Maar bij een latere controle bleek dat geen van de pakketten correct is geïnstalleerd. Ik kan het pakket niet importeren en er is geen pakket te vinden in de map site-packages van mijn virtualenv. Dus wat ging er mis?


Antwoord 1, autoriteit 100%

Dit werkt voor mij:

$ pip install -r requirements.txt --no-index --find-links file:///tmp/packages

--no-index – Negeer pakketindex (kijk in plaats daarvan alleen naar --find-links URL’s).

-f, --find-links <URL> – Indien een URL of pad naar een HTML-bestand, parseer dan op links naar archieven.

Als een lokaal pad of file:// URL een directory is, zoek dan naar archieven in de directorylijst.


Antwoord 2, autoriteit 154%

Dit werkt voor iedereen:

pip install -r /path/to/requirements.txt

Antwoord 3, autoriteit 16%

Voor virtualenv om alle bestanden in het bestand requirements.txt te installeren.

  1. cd naar de map waar requirements.txt zich bevindt
  2. activeer uw virtualenv
  3. voer: pip install -r requirements.txt uit in je shell

Antwoord 4, autoriteit 7%

Ik had een soortgelijk probleem. Ik heb dit geprobeerd:

    pip install -U -r requirements.txt

(-U = update als het al was geïnstalleerd)

Maar het probleem bleef bestaan. Ik realiseerde me dat sommige generieke bibliotheken voor ontwikkeling werden gemist.

    sudo apt-get install libtiff5-dev libjpeg8-dev zlib1g-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python-tk

Ik weet niet of dit je zou helpen.


Antwoord 5, autoriteit 4%

Gebruik:

pip install -r requirements.txt

Voor meer details, controleer de help-optie:

pip install --help

We kunnen de optie ‘-r’ –

. vinden

-r, –requirement Installeer vanuit het opgegeven vereistenbestand. Deze optie kan zijn:
meerdere keren gebruikt.

Verdere informatie over enkele veelgebruikte pip install-opties (dit is de help-optie op de pip install-opdracht):

Voer hier de afbeeldingsbeschrijving in

Ook het bovenstaande is de complete set opties. Gebruik a.u.b. pip install --help voor de volledige lijst met opties.


Antwoord 6, autoriteit 3%

Kort antwoord

pip install -r /path/to/requirements.txt

of in een andere vorm:

python -m pip install -r /path/to/requirements.txt

Uitleg

Hier is -r een korte vorm van --requirement en het vraagt ​​de pip om te installeren vanuit de gegeven requirements bestand.

pip start de installatie pas na het controleren van de beschikbaarheid van alle vermelde items in het requirements-bestand en de installatie start niet, zelfs niet als er één requirement is niet beschikbaar.

Een tijdelijke oplossing om de beschikbare pakketten te installeren, is het één voor één installeren van de vermelde pakketten. Gebruik daarvoor het volgende commando. Er wordt een rode kleurwaarschuwing weergegeven om u op de hoogte te stellen van de niet-beschikbare pakketten.

cat requirements.txt | xargs -n 1 pip install

Om opmerkingen (regels die beginnen met een #) en lege regels te negeren, gebruik je:

cat requirements.txt | cut -f1 -d"#" | sed '/^\s*$/d' | xargs -n 1 pip install

Antwoord 7, autoriteit 2%

Vaak wilt u een snelle installatie vanuit lokale archieven, zonder PyPI te onderzoeken.

Download eerst de archieven die aan uw eisen voldoen:

$ pip install --download <DIR> -r requirements.txt

Installeer vervolgens met behulp van –find-links en –no-index:

$ pip install --no-index --find-links=[file://]<DIR> -r requirements.txt

Antwoord 8, autoriteit 2%

Maak allereerst een virtuele omgeving.

In Python 3.6

virtualenv --python=/usr/bin/python3.6 <path/to/new/virtualenv/>

In Python 2.7

virtualenv --python=/usr/bin/python2.7 <path/to/new/virtualenv/>

Activeer vervolgens de omgeving en installeer alle pakketten die beschikbaar zijn in het bestand requirement.txt.

source <path/to/new/virtualenv>/bin/activate
pip install -r <path/to/requirement.txt>

Antwoord 9

Ik werk met veel systemen die door ontwikkelaars zijn verpest "volgens instructies die ze op internet hebben gevonden". Het komt heel vaak voor dat je pip en je python niet naar dezelfde paden/site-pakketten kijken. Om deze reden, wanneer ik vreemdheid tegenkom, begin ik met dit te doen:

$ python -c 'import sys; print(sys.path)'
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages']
$ pip --version
pip 9.0.1 from /usr/local/lib/python2.7/dist-packages (python 2.7)

Dat is een gelukkig systeem.

Hieronder staat een ongelukkig systeem. (Of het is in ieder geval een zalig onwetend systeem dat ervoor zorgt dat anderen ongelukkig worden.)

$ pip --version
pip 9.0.1 from /usr/local/lib/python3.6/site-packages (python 3.6)
$ python -c 'import sys; print(sys.path)'
['', '/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/site-packages']
$ which pip pip2 pip3
/usr/local/bin/pip
/usr/local/bin/pip3

Het is ongelukkig omdat pip (python3.6 en) /usr/local/lib/python3.6/site-packages terwijl python (python2.7 en) gebruikt /usr/local/lib/python2.7/site-packages

Als ik er zeker van wil zijn dat ik vereisten voor de juiste python installeer, doe ik dit:

$ which -a python python2 python3
/usr/local/bin/python
/usr/bin/python
/usr/local/bin/python2
/usr/local/bin/python3
$ /usr/bin/python -m pip install -r requirements.txt

Je hebt gehoord: "Als het niet kapot is, probeer het dan niet te repareren." De DevOps-versie daarvan is: "Als je het niet hebt gebroken en je kunt er omheen werken, probeer het dan niet te repareren."


Antwoord 10

Requirements.txt-bestand installeren in virtuele env met Python 3:

Ik had hetzelfde probleem. Ik probeerde het bestand requirements.txt in een virtuele omgeving te installeren. Ik heb de oplossing gevonden.

Aanvankelijk maakte ik mijn virtualenv op deze manier:

virtualenv -p python3 myenv

Activeer de omgeving met:

source myenv/bin/activate

Nu heb ik het bestand requirements.txt geïnstalleerd met:

pip3 install -r requirements.txt

De installatie is gelukt en ik heb de modules kunnen importeren.


Antwoord 11

Probeer dit:

python -m pip install -r requirements.txt

Antwoord 12

pip install --user -r requirements.txt 

OF

pip3 install --user -r requirements.txt 

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Other episodes