$ HOME klasörüne pip paketleri yükleme


330

Mümkün mü? Yüklerken pip, python paketlerini $HOMEklasörüme yükleyin . (örneğin, ben yüklemek istediğiniz mercurialkullanarak pip, ama içinde $HOMEyerine /usr/local)

Ben bir mac makinesi ile ve sadece bu olasılığı düşündüm, benim "kirletmek" yerine, /usr/localbenim $HOMEyerine kullanmak istiyorum .

PEP370 tam olarak bununla ilgilidir . Bu paketleri yalnızca $ HOME klasörüme yüklenecek şekilde oluşturmak ˜/.localve yapmak pip install packageyeterli mi?


Virtualenv'i kontrol ettin mi? İzole bir ortamda pip'li paketleri kurabilirsiniz.
— joet3ch

2
Bunu düşündüm, ancak mevcut python'u (2.6.1) kullanarak bazı python uygulamaları yüklemek istiyorum, ancak / usr / local / 'a yüklemek yerine, $ HOME klasörüne yükleyin ve $ PATH'a ekleyin. Bunun mümkün olup olmadığını ve bu yaklaşımın uyarılarını bilmek istiyorum.
— Birisi hala seni MS-DOS

11
PEP370'i tanıtmak için +1. Bu, daha fazla insanın bilmesi gereken basit ama kullanışlı bir seçenektir.
— Ned Deily

Benzer bir problemle savaşıyordum (muhtemelen yanlış yapılandırılmış pip ve iki farklı piton için easy_install'dan kaynaklanıyor). Son çare olarak, düz kullanmaya çalıştım $ python setup.py --user install. Ve işe yaradı. Paket artık ev alt dizinine kurulur ve beklendiği gibi çalışır. Sunucu yöneticimle konuşmak zorunda kalacak.
— Jan Vlcinsky

1
PIP kurmanız gerekiyorsa, wget https://bootstrap.pypa.io/get-pip.pytakip eden gibi bir şey yapın python get-pip.pyve gitmeye hazırsınız. Yüklü PIP'nin çok eski olduğu bir makinedeyseniz (benim için durum buydu) faydalı olabilir. Daha fazla bilgi için pip.readthedocs.org/en/latest/instal.html adresine bakın .
— Markus

Yanıtlar:


463

A kullanabilirsiniz virtualenv, ancak gerekmez. Hile, PEP370 --userargümanını betiğe geçiriyor setup.py. En son sürümüyle, pipbunu yapmanın bir yolu:

pip install --user mercurial

Bu, hgbetiğin yüklenmesine $HOME/.local/bin/hgve geri kalan hg paketiyle sonuçlanmalıdır $HOME/.local/lib/pythonx.y/site-packages/.

Yukarıdakilerin Python 2.6 için geçerli olduğunu unutmayın. Bir yaşandı tartışmalara biraz PEP370 tarzı için Mac OS X üzerinde uygun dizin konumu ne olduğu hakkında Python çekirdek geliştiricileri arasında usertesisler. Python 2.7 ve 3.2, Mac OS X üzerinde yer değiştirildi $HOME/.localkadar $HOME/Library/Python. Bu, gelecekteki bir sürümde değişebilir. Ancak, şimdilik, 2.7'de (ve hgPython 3'te destekleniyorsa 3.2 ), yukarıdaki konumlar $HOME/Library/Python/x.y/bin/hgve olacaktır $HOME/Library/Python/x.y/lib/python/site-packages.


İyi bir nokta. Ne yazık ki, Python 2.7'de OS X çerçeve derlemeleri için PYTHONUSERBASE'in yok sayılmasına neden olan bir hata var. Python 2.7.3 için düzeltilecektir.
— Ned Deily

1
Bu çok ilginç görünüyor. easy_installMac OS X'te varsayılan olarak yüklü olarak gelir, bu nedenle yalnızca pip $HOMEklasörünün dışında yüklü olurdu .
— Birisi hala MS-DOS

1
PYTHONUSERBASE'i başka bir konuma değiştirmeye çalıştım. Başarı yok. Bu özellikle Windows üzerinde nasıl yapılır?
— Snerd

2
Bunu yaparsanız ve daha sonra conda ortamlarını kullanmaya çalışırsanız, yüklü dosyaların .localher zaman önce vurulacağını ve bu da ithalat hatalarını izlemenin çok zor olabileceğini unutmayın.
— tacaswell

12
OSX'te, kullanıcı sitesi dizininin bin klasörünün PATH üzerinde olmadığını unutmayın. Bu, kullanıcı sitesi dizinindeki paketler tarafından yüklenen komut dosyalarının siz olmadığınız sürece çalıştırılamayacağı anlamına gelir export PATH=$PATH:~/Library/Python/X.Y/bin/.
— André Caron

21

HOME dizininizde virtualenv kullanırdım.

$ sudo easy_install -U virtualenv
$ cd ~
$ virtualenv .
$ bin/pip ...

Daha sonra ~/.(login|profile|bash_profile), kabuğunuzun PATH'ınıza ~ / bin eklemesi için hangisi doğru olursa, bunu değiştirebilirsiniz pip|python|easy_install. Bu varsayılan olarak kullanılır.


9
"Fiili" Bunu yapmanın yolu ise virtualenv venv, source venv/bin/activate. Her zaman virtualenv'inizi kullanmak istemeyebilirsiniz ve bu yöntemi kullanarak, istemi öneklemenin önüne ekler (venv).
— nyuszika7h

2
@ nyuszika7h Virtualenv'in nasıl kullanılacağını biliyoruz. Ama bu gerçekten soruyu cevaplıyor ve çok düzgün bir çözüm.
— itsafire

8
@itsafire "Biz" kimdir? Okumaktan tavsiye en.wikipedia.org/wiki/Weasel_word
— nyuszika7h

3
Her neyse, katılmıyorum, bu "düzgün bir çözüm" değil. Anlamsız bir hack.
— nyuszika7h

19

Sen belirtebilirsiniz -tseçeneği ( --targethedef dizini belirtmek için). pip install --helpAyrıntılı bilgi için bakınız . Bu, ihtiyacınız olan komuttur:

pip install -t path_to_your_home package-name

Örneğin, dizinime mxnet yüklemek için şunu yazıyorum $HOME:

pip install -t /home/foivos/ mxnet

Bir hata alıyorum distutils.errors.DistutilsOptionError: can't combine user with prefix, exec_prefix/home, or install_(plat)base. Bu ne demek?
— Anthony Kong

İlgili bir tartışma için github.com/pypa/pip/issues/3826 adresini ziyaret edin . Bu konuda daha fazla bir şey bilmiyorum, ama çevremde hiçbir zaman bir sorunla karşılaşmadım.
— Foivos
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.