Python yüklemesini varsayılan apt apt bağımlılıklarına geri yükleme


14

Python kurulumlarım (2 ve 3) ile çok oynadım ve bir sürü paket yükledim, bazıları kullanıyordum apt-get, ancak çoğu kullanıyordum pip. Ayrıca birçok aptyüklü paketi pipdaha yeni bir sürüme yükselttim .

Sorum şu:
Ben, bütün bu değişiklikleri ters kaldırmak nasıl pipmontajlı Python paketleri ve sadece kendi varsayılan depo sürümünde önceden yüklenmiş paketlerin varsayılan kümesi tutmak, artı kişiler tarafından yüklenen apt-gether zaman depo sürümüne indirmek, ama sadece diğer yazılımların bağımlılık olarak sürümü gerekiyorsa.

Bunu sistem için toplanmış bir Python ortamına sahip olmak ve değişikliklerimi sadece sanal sunucularda yapmak istiyorum.

Sistem yeniden yüklenmeden bu mümkün müdür? Nasıl yaklaşırım?


Yanıtlar:


5

Tarafından yönetilen Python paketleri listeleyerek başlayacağım apt-get(aşağıdaki bir liner çalıştırmak için birkaç saniye sürer, sabırlı olun):

$ for pyfile in `ls /usr/lib/python2.7/dist-packages`; do dpkg -S "/usr/lib/python2.7/dist-packages/${pyfile}" | sed 's/:.*//g'; done | sort -u

Not: gerekirse 2.7'yi ilgilendiğiniz python sürümüyle değiştirin.

Ardından, manuel olarak yüklediğiniz paketleri kaldırın. Hangisini yüklediğinizden emin değilseniz, aşağıdaki komutu kullanarak manuel olarak yüklenen tüm paketlerin listesini alabilirsiniz ( bu soruya bakın ):

$ comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u)

Ardından, manuel olarak yüklediğiniz Python paketlerini kaldırın, örneğin:

$ sudo apt-get remove python-tk python-scipy

Ardından, pip kullanarak hangi paketleri kurduğunuzu bilmek istersiniz:

$ ls -ltd /usr/local/lib/python2.7/dist-packages/*

Bu komut, pip'in yükleme dizininin içeriğini son değişiklik tarihine göre sıralanmış şekilde listeleyerek kendi yüklediğiniz paketleri bulmanızı kolaylaştırır. Örneğin, gcloudkaldırmak istemediğim bir grup pip paketini yükleyen Google'ın aracını yükledim , ancak listeye bakarken hepsinin aynı anda yüklendiğini görmek kolay, bu yüzden hangilerini kullanmam gerektiğini biliyorum bırakın ve hangilerini kaldırabilirim. Herhangi bir pip paketini kaldırmadan önce, kurulu paketler listesinin bir anlık görüntüsünü almalısınız:

$ sudo pip freeze > $HOME/pip_freeze_snapshot.txt

Ardından, istediğiniz paketleri kaldırın, örneğin:

$ sudo pip uninstall py pytest

Son olarak, bazı pip paketlerinin kullanıcı dizininize yüklenmiş olabileceğini unutmayın. Belki de bununla iyisindir, ancak değilse bunları listeleyebilirsin:

$ ls -ltd $HOME/.local/lib/python2.7/site-packages/*

Tüm bu paketlerden kurtulmak istiyorsanız bu dizini silebilirsiniz. Aksi takdirde, tek tek paketleri kaldırmanız yeterlidir, örneğin:

$ pip uninstall tensorflow

Diğer python sürümlerini kontrol etmeyi unutmayın (örn. 3.5).


Çok fazla paketin kaldırılmasının sisteminizi sakatlayabileceğine dair bir kamu güvenliği duyurusu öneririm, ancak aksi halde bu mükemmel bir kılavuzdur. (Örneğin, ben memnunum yaptığım mvyerine rmon my /usr/local/lib/python3.6ben oldukça temel sistem fonksiyonları için orada bazı şeyler gerekli birkaç dakika sonra keşfedilen çünkü.
craq
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.