„Python“ paketas neprisijungęs

Koks yra geriausias būdas atsisiųsti „python“ paketą ir jo priklausomybes nuo „pypi“ neprisijungus kitam įrenginiui? Ar yra paprastas būdas tai padaryti naudojant „pip“ arba „easy_install“? Bandau įdiegti užklausų biblioteką FreeBSD lauke, kuris nėra prijungtas prie interneto.

102
19 июня '12 в 0:51 2012-06-19 00:51 Chris Drantz paprašė birželio 19 d. 12 val. 0:51 2012-06-19 00:51
@ 8 atsakymai

Jei paketas yra PYPI, atsisiųskite jį ir jo priklausomybes bet kuriame vietiniame kataloge. Pavyzdžiui.

 $ mkdir / pypi  / pypi $ ls -la   -rw-r - r-- 1 pavel darbuotojų 237954 19 bal. 11:31 Kolba-WTF-0.6.tar.gz   -rw-r - r-- 1 pavel darbuotojų 389741 22 vasario 17:10 Jinja2-2.6.tar.gz   -rw-r - r-- 1 pavel personalo 70305 balandžio 11 00:28 MySQL-python-1.2.3.tar.gz   -rw-r - r-- 1 pavel darbuotojų 2597214 balandžio 10 18:26 SQLAlchemy-0.7.6.tar.gz   -rw-r - r-- 1 pavel darbuotojų 1108056 vasario 22 17:10 Werkzeug-0.8.2.tar.gz   -rw-r - r-- 1 pavel darbuotojų 488207 balandžio 10 18:26 boto-2.3.0.tar.gz   -rw-r - r-- 1 pavel darbuotojų 490192 balandžio 16 12:00 kolba-0.9-dev-2a6c80a.tar.gz

Kai kurie paketai gali būti archyvuojami į panašius paieškos failus rankiniu būdu. Tai darau daug, kai noriu naujos (mažiau stabilios) kažko versijos. Kai kurie paketai nėra „PYPI“, todėl jie taikomi jiems.

Tarkime, kad turite gerai suformuotą „Python“ programą ~/src/myapp . ~/src/myapp/setup.py turės sąrašą install_requires kuriame yra vienas ar daugiau dalykų, kuriuos turite kataloge /pypi . Pavyzdžiui:

  install_requires=[ 'boto', 'Flask', 'Werkzeug', # and so on 

Jei norite, kad programa būtų paleista su visomis būtinomis priklausomybėmis, vis dar įsilaužus į tai, atliksite kažką panašaus:

 $ cd ~ / src / myapp $ python setup.py develop --always-unzip --allow-hosts = Nėra --find-links = / pypi

Taigi, jūsų paraiška bus vykdoma tiesiogiai iš šaltinio katalogo. Jūs galite nulaužti dalykus ir tada iš naujo paleisti programą neatkurdami nieko.

Jei norite įdiegti programą ir jos priklausomybes dabartinėje „Python“ aplinkoje, tai padarysite taip:

 $ cd ~ / src / myapp $ easy_install --always-unzip --allow-hosts = Nėra --find-links = / pypi.

Abiem atvejais kūrimas nepavyks, jei /pypi kataloge yra viena ar daugiau priklausomybių. Jis nesistengs atsitiktinai įdiegti trūkstamus daiktus iš interneto.

Labai rekomenduoju paskambinti setup.py develop ... ir easy_install ... aktyvioje virtualioje aplinkoje, kad nebūtų užteršta pasaulinė „Python“ aplinka. Tai (virtualenv, tai yra) yra gana kelias. Niekada neįdiekite nieko į pasaulinę „Python“ aplinką.

Jei mašina, kurioje sukūrėte programą, turi tą pačią architektūrą, kaip ir mašina, kurioje norite ją įdiegti, galite tiesiog archyvuoti visą virtualios aplinkos, į kurią esate easy_install katalogą - jei viskas. Tiesiog prieš tariant, turite padaryti virtualios aplinkos katalogą perkeliamą (žr. - perkelti ). PASTABA. Taikomam kompiuteriui turi būti įdiegta ta pati „Python“ versija, taip pat bet kokios „C“ priklausomybės, kurias gali įdiegti jūsų programa (pvz., jei priklausote nuo PIL , pirmiausia turite įdiegti „libpng“, „libjpeg“ ir pan.) .

51
19 июня '12 в 1:32 2012-06-19 01:32 atsakymą pateikė Pavelas Repinas 19 birželio 12 d. 1:32 2012-06-19 01:32

„Pip download komanda leidžia atsisiųsti paketus be jų įdiegimo:

pip download -r requirements.txt

(Ankstesnėse „pip“ versijose tai buvo parašyta kaip pip install --download -r requirements.txt .)

Tada galite pip install --no-index --find-links/path/to/download/dir / -r requirements.txt requir.txt, kad įdiegtumėte šiuos atsisiųstus sdistus be prieigos prie tinklo.

199
21 янв. Carl Meyer atsakymas dėl sausio 21 d 2013-01-21 23:55 '13, 11:55, 2013-01-21 23:55

autonominis pythonas. tam aš naudoju virtualenv (izoliuota python aplinka)

1) Įdiekite virtualenv internete su pip:

 pip install virtualenv --user 

arba neprisijungę naudojant „whl“: spustelėkite šią nuorodą , atsisiųskite naujausią versiją (.whl arba tar.gz) ir įdiekite ją naudodami šią komandą:

 pip install virtualenv-15.1.0-py2.py3-none-any.whl --user 

su --user jums nereikia naudoti sudo pip…

2) naudokite virtualenv

Internetiniame įrenginyje pasirinkite katalogą su cd terminalu ir paleiskite šį kodą:

 python -m virtualenv myenv cd myenv source bin/activate pip install Flask 

įdiegę visus paketus, turėtumėte generuoti requir.txt taip, kad jūsų virtualenv būtų aktyvus, rašykite

 pip freeze > requirements.txt 

atidarykite naują terminalą ir sukurkite kitą env, pvz., myenv2 .

 python -m virtualenv myenv2 cd myenv2 source bin/activate cd - ls 

Dabar galite pereiti į neprisijungusį aplanką, kuriame yra aplankas tranferred_packages ir tranferred_packages . Atsisiųskite paketus su šiuo kodu ir įdėkite juos į aplanką „ tranferred_packages .

 pip download -r requirements.txt 

perkelkite neprisijungusį aplanką į neprisijungtą kompiuterį ir tada

 python -m virtualenv myenv2 cd myenv2 source bin/activate cd - cd offline pip install --no-index --find-links="./tranferred_packages" -r requirements.txt 

kas yra neprisijungusiame aplanke [needs.txt, tranferred_packages {Flask-0.10.1.tar.gz, ...}]

patikrinkite siuntų sąrašą

 pip list 

atkreipkite dėmesį: kaip ir 2017 m., geriau naudoti „python 3“. Šią komandą galite sukurti „python 3 virtualenv“.

 virtualenv -p python3 envname 
11
10 авг. atsakymas duotas 10 rug . 2017-08-10 21:19 '17 at 21:19 2017-08-10 21:19

Atsisiųskite paketą , perkelkite jį į savo „FreeBSD“ įrenginį ir ištraukite ją, tada paleiskite „ python setup.py install ir baigsite!

EDIT: tiesiog pridėkite, galite taip pat nustatyti paketus su pip.

6
19 июня '12 в 0:54 2012-06-19 00:54 atsakymas duotas dav1d birželio 19 d., 12 val. 0:54 2012-06-19 00:54

Naudojant wheel rinkinius.

paketas:

 $ tempdir=$(mktemp -d /tmp/wheelhouse-XXXXX) $ pip wheel -r requirements.txt --wheel-dir=$tempdir $ cwd=`pwd` $ (cd "$tempdir"; tar -cjvf "$cwd/bundled.tar.bz2" *) 

nukopijuokite archyvą ir įdiekite:

 $ tempdir=$(mktemp -d /tmp/wheelhouse-XXXXX) $ (cd $tempdir; tar -xvf /path/to/bundled.tar.bz2) $ pip install --force-reinstall --ignore-installed --upgrade --no-index --no-deps $tempdirroot/wheelhouse** is my **/path/to/packages/** total 4524 -rw-r--r--. 1 root root 16667 May 23 2017 incremental-17.5.0-py2.py3-none-any.whl -rw-r--r--. 1 root root 34713 Sep 1 10:21 attrs-18.2.0-py2.py3-none-any.whl -rw-r--r--. 1 root root 3088398 Oct 15 14:41 Twisted-18.9.0.tar.bz2 -rw-r--r--. 1 root root 133356 Jan 28 15:58 chardet-3.0.4-py2.py3-none-any.whl -rw-r--r--. 1 root root 154154 Jan 28 15:58 certifi-2018.11.29-py2.py3-none-any.whl -rw-r--r--. 1 root root 57987 Jan 28 15:58 requests-2.21.0-py2.py3-none-any.whl -rw-r--r--. 1 root root 58594 Jan 28 15:58 idna-2.8-py2.py3-none-any.whl -rw-r--r--. 1 root root 118086 Jan 28 15:59 urllib3-1.24.1-py2.py3-none-any.whl -rw-r--r--. 1 root root 47229 Jan 28 15:59 tqdm-4.30.0-py2.py3-none-any.whl -rw-r--r--. 1 root root 7922 Jan 28 16:13 constantly-15.1.0-py2.py3-none-any.whl -rw-r--r--. 1 root root 164706 Jan 28 16:14 zope.interface-4.6.0-cp27-cp27mu-manylinux1_x86_64.whl -rw-r--r--. 1 root root 573841 Jan 28 16:14 setuptools-40.7.0-py2.py3-none-any.whl -rw-r--r--. 1 root root 37638 Jan 28 16:15 Automat-0.7.0-py2.py3-none-any.whl -rw-r--r--. 1 root root 37905 Jan 28 16:15 hyperlink-18.0.0-py2.py3-none-any.whl -rw-r--r--. 1 root root 52311 Jan 28 16:15 PyHamcrest-1.9.0-py2.py3-none-any.whl -rw-r--r--. 1 root root 10586 Jan 28 16:15 six-1.12.0-py2.py3-none-any.whl 
  • Atsisiųskite paketų katalogą ir nukopijuokite jį į kompiuterį, neturintį prieigos prie interneto. Tada atlikite

     cd /path/to/packages/ tar -cvzf packages.tar.gz . # not the . (dot) at the end 

    Nukopijuokite paketus.tar.gz į paskirties kompiuterį, neturintį prieigos prie interneto.

  • Kompiuteryje, neturinčiame prieigos prie interneto, atlikite šiuos veiksmus (darant prielaidą, kad nukopijuotus paketinius paketus nukreipėte į / kelias / į / paketą / dabartiniame kompiuteryje)

     cd /path/to/packages/ tar -xvzf packages.tar.gz mkdir -p $HOME/.config/pip/ vi $HOME/.config/pip/pip.conf 

    ir įklijuokite šį turinį ir išsaugokite jį.

     [global] timeout = 10 find-links = file:///path/to/package/select * from route_dist where vpn_label = 22181 and next_hop = '159.24.196.131' limit 10; no-cache-dir = true no-index = true 
  • Galiausiai, siūlau paketų virtualenv naudoti tam tikrą virtualenv formą.

     virtualenv -p <python2/3> venv source ./venv/bin/activate pip install <package> 
  • Turėtumėte galėti atsisiųsti visus modulius, esančius / path / to / package / directory.

    Pastaba: aš tai padariau, nes negalėjau pridėti parametrų ar keisti modulių įdiegimo būdo. Priešingu atveju norėčiau padaryti

      pip install --no-index --find-links /path/to/download/dir/ -r requirements.txt 
    0
    28 янв. atsakymas pateikiamas han solo Jan 28 2019-01-28 14:56 '19, 14:56 pm 2019-01-28 14:56