Menurut jawaban ini , apt-get
instal paket ke seluruh sistem (dari kanonik), dan hanya pip
dapat menginstal paket ke dalam virtualenv (dari Pypi).
Namun, saya perlu menginstal paket ke dalam virtualenv yang hanya dapat diakses melalui apt-get
, yaitu tidak di-host oleh Pypi.
Bagaimana aku melakukan itu?
Jawaban:
Alternatif lain adalah mengunduh file dengan
apt-get download
, mengekstraknya,dpkg -x
dan memindahkan file yang diekstrak ke virtualenv Anda:Contoh:
anggap ini menghasilkan:
Lalu, gunakan dpkg untuk mengekstrak bagian data dari file .deb:
Di
./xyz-tmp
direktori yang baru dibuat , Anda sekarang memiliki semua file yang akan diinstal ke/
(root) seandainya Anda menggunakanapt-get install
.Asumsikan mereka adalah:
Anda masih perlu memetakan subdirektori (mis.
dist-packages
Vs.site-packages
), dan kemudian dapat memindahkan file ke virtualenv Anda (dengan asumsi virtualenv/home/user/.virtualenvs/py27
):Dibandingkan dengan jawaban saya sebelumnya, pendekatan ini memiliki keuntungan bahwa Anda tidak perlu meneliti file mana yang diinstal, karena Anda dapat melihatnya di direktori ekstraksi. Itu masih membutuhkan pemetaan direktori antara arsip yang diekstraksi dan virtualenv.
sumber
Semua yang diperlukan untuk virtualenv adalah keberadaan file paket di subtree dari virtualenv Anda. Jadi selama Anda dapat menentukan file mana saja yang diinstal ke dalam sistem Python melalui apt-get, Anda dapat menyalinnya ke virtualenv Anda. Ini termasuk file dalam direktori paket situs serta di tempat lain dalam subtree Python Anda (misalnya skrip).
Contoh hipotesis:
Asumsikan menginstal paket bernama "xyz" ke dalam sistem Anda Python 2.7, Anda mungkin mendapatkan ini:
Salin file yang terkait dengan paket "xyz" ke virtualenv Anda (dengan asumsi virtualenv
/home/user/.virtualenvs/py27
):Kesulitannya adalah (1) dalam menentukan file mana yang termasuk dalam paket tertentu, dan (2) dalam memetakan subdirektori yang sesuai antara sistem Python dan virtualenv (misalnya
dist-packages
vs.site-packages
dalam contoh di atas).Jika ada yang lebih berpengalaman dengan ini, silakan komentar.
sumber