Apa cara terbaik untuk mengunduh paket python dan dependensinya dari pypi untuk instalasi offline di komputer lain? Apakah ada cara mudah untuk melakukan ini dengan pip atau easy_install? Saya mencoba menginstal pustaka permintaan pada kotak FreeBSD yang tidak terhubung ke internet.
python
pip
freebsd
easy-install
python-requests
Chris Drantz
sumber
sumber
Jawaban:
Jika paket tersebut ada di PYPI, unduh dan ketergantungannya ke beberapa direktori lokal. Misalnya
Beberapa paket mungkin harus diarsipkan ke dalam tarbal tampak serupa dengan tangan. Saya sering melakukannya ketika saya menginginkan versi yang lebih baru (kurang stabil) dari sesuatu. Beberapa paket tidak pada PYPI, jadi hal yang sama berlaku untuk mereka.
Misalkan Anda memiliki aplikasi Python yang terbentuk dengan benar di
~/src/myapp
.~/src/myapp/setup.py
akan memilikiinstall_requires
daftar yang menyebutkan satu atau lebih hal yang Anda miliki di/pypi
direktori Anda . Seperti itu:Jika Anda ingin dapat menjalankan aplikasi Anda dengan semua dependensi yang diperlukan saat masih meretasnya, Anda akan melakukan sesuatu seperti ini:
Dengan cara ini aplikasi Anda akan dieksekusi langsung dari direktori sumber Anda. Anda dapat meretas sesuatu, dan kemudian menjalankan kembali aplikasi tanpa membangun kembali apa pun.
Jika Anda ingin menginstal aplikasi dan dependensinya ke dalam lingkungan python saat ini, Anda akan melakukan sesuatu seperti ini:
Dalam kedua kasus, build akan gagal jika satu atau lebih dependensi tidak ada dalam
/pypi
direktori. Itu tidak akan mencoba untuk secara sembarangan menginstal hal-hal yang hilang dari Internet.Saya sangat merekomendasikan untuk memanggil
setup.py develop ...
daneasy_install ...
dalam lingkungan virtual aktif untuk menghindari kontaminasi lingkungan Python global Anda. Ini (virtualenv) cukup banyak cara untuk pergi. Jangan pernah memasang apa pun ke lingkungan Python global.Jika mesin yang Anda buat aplikasi Anda memiliki arsitektur yang sama dengan mesin yang ingin Anda gunakan, Anda bisa langsung memasukkan seluruh direktori lingkungan virtual ke mana Anda
easy_install
menambahkan semuanya. Tepat sebelum tarballing, Anda harus membuat direktori lingkungan virtual dapat dipindahkan (lihat opsi --relocatable ). CATATAN: mesin tujuan harus memiliki versi Python yang sama diinstal, dan juga setiap dependensi berbasis C aplikasi Anda mungkin harus sudah diinstal di sana juga (misalnya mengatakan jika Anda bergantung pada PIL , maka libpng, libjpeg, dll harus diinstal sebelumnya) .sumber
--allow-hosts=None
Anda bisa menggunakan saklar--no-index
download
Perintah pip memungkinkan Anda mengunduh paket tanpa menginstalnya:pip download -r requirements.txt
(Dalam versi pip sebelumnya, ini dieja
pip install --download -r requirements.txt
.)Kemudian Anda dapat menggunakan
pip install --no-index --find-links /path/to/download/dir/ -r requirements.txt
untuk menginstal sdists yang diunduh itu, tanpa mengakses jaringan.sumber
--find-links file:/path/to/some/dir/
dan Anda harus mengunduh dan menginstal dengan versi yang sama dari pip - jika tidak maka akan gagalJika Anda ingin menginstal python libs dan dependensinya offline, selesaikan langkah-langkah berikut pada mesin dengan os yang sama, jaringan terhubung, dan python diinstal:
1) Buat
requirements.txt
file dengan konten serupa (Catatan - ini adalah perpustakaan yang ingin Anda unduh):Salah satu opsi untuk membuat file persyaratan adalah menggunakan
pip freeze > requirements.txt
. Ini akan mencantumkan semua perpustakaan di lingkungan Anda. Kemudian Anda bisa masuk kerequirements.txt
dan menghapus yang tidak diperlukan.2) Jalankan perintah
mkdir wheelhouse && pip download -r requirements.txt -d wheelhouse
untuk mengunduh lib dan dependensinya ke direktoriwheelhouse
3) Salin persyaratan.txt ke
wheelhouse
direktori4) Arsip ruang kemudi ke
wheelhouse.tar.gz
dengantar -zcf wheelhouse.tar.gz wheelhouse
Kemudian unggah
wheelhouse.tar.gz
ke mesin target Anda:1) Jalankan
tar -zxf wheelhouse.tar.gz
untuk mengekstrak file2) Jalankan
pip install -r wheelhouse/requirements.txt --no-index --find-links wheelhouse
untuk menginstal lib dan dependensinyasumber
pip install
pada akhirnya, ia mengatakan: ERROR: tidak dapat menemukan versi yang memenuhi persyaratan ..`python offline. untuk melakukan ini saya menggunakan virtualenv (lingkungan Python terisolasi)
1) instal virtualenv online dengan pip:
atau offline dengan whl: buka tautan ini , unduh versi terakhir (.whl atau tar.gz) dan instal dengan perintah ini:
dengan menggunakan
--user
Anda tidak perlu menggunakansudo pip…
.2) gunakan virtualenv
pada mesin online pilih direktori dengan terminal
cd
dan jalankan kode ini:Setelah menginstal semua paket, Anda harus membuat
requirements.txt
jadi sementara virtualenv Anda aktif, tulisbuka terminal baru dan buat env lain seperti
myenv2
.sekarang Anda dapat pergi ke folder offline di mana folder
requirements.txt
dan Andatranferred_packages
ada di sana. unduh paket dengan kode berikut dan masukkan semuanya ketranferred_packages
folder.bawa folder offline Anda ke komputer offline lalu
apa yang ada di folder offline [requirement.txt, tranferred_packages {Flask-0.10.1.tar.gz, ...}]
periksa daftar paket Anda
Catatan: seperti kita di tahun 2017 lebih baik menggunakan python 3. Anda dapat membuat python 3 virtualenv dengan perintah ini.
sumber
Unduh tarball , transfer ke mesin FreeBSD Anda dan ekstrak, setelah itu jalankan
python setup.py install
dan Anda selesai!Sunting: Hanya untuk menambahkan itu, Anda juga dapat menginstal tarbal dengan pip sekarang.
sumber
Biarkan saya melalui proses langkah demi langkah:
buka prompt perintah atau shell dan jalankan perintah berikut:
Misalkan paket yang Anda inginkan adalah
tensorflow
$ pip download tensorflow
Sekarang, di komputer target, salin
packages
folder dan terapkan perintah berikutPerhatikan bahwa
tensorflow-xyz.whl
harus diganti dengan nama asli paket yang diperlukan.sumber
Menggunakan
wheel
paket yang dikompilasi.bundel:
salin tarball dan instal:
Catatan
wheel
paket biner tidak lintas mesin.Lebih banyak referensi. di sini: https://pip.pypa.io/en/stable/user_guide/#installation-bundles
sumber
Saya punya masalah serupa. Dan saya harus membuatnya menginstal dengan cara yang sama, kami lakukan dari pypi.
Saya melakukan hal-hal berikut:
Buat direktori untuk menyimpan semua paket di mesin yang memiliki akses internet.
Unduh semua paket ke jalur
Tar direktori direktori dan salin ke Mesin yang tidak memiliki akses internet. Lalu lakukan,
Salin paket.tar.gz ke mesin tujuan yang tidak memiliki akses internet.
Di mesin yang tidak memiliki akses internet, lakukan hal berikut (Dengan asumsi Anda menyalin paket tar ke / path / ke / paket / di mesin saat ini)
dan rekatkan konten berikut di dalam dan simpan.
Akhirnya, saya sarankan Anda menggunakan, beberapa bentuk
virtualenv
untuk menginstal paket.Anda harus dapat mengunduh semua modul yang ada di direktori / path / ke / paket / .
Catatan: Saya hanya melakukan ini, karena saya tidak bisa menambahkan opsi atau mengubah cara kami menginstal modul. Kalau tidak, aku akan melakukannya
sumber
Untuk Pip 8.1.2 Anda dapat menggunakan
pip download -r requ.txt
untuk mengunduh paket ke mesin lokal Anda.sumber