2012-01-16 3 views
17

Projelerim için bağımlılıkların listesini tutmak için pip requirements file kullanıyorum.Pip donduru ile yapılan gereksinimler dosyasında pip yükleme seçenekleri nasıl korunur?

şimdi kendim Projemde en requirements.txt kaydetmek çıkışında bu seçenekleri kaydetmez pip install --install-option='some-setup.py.option'amapip freeze kullanarak bir kütüphane yüklemek zorunda bulmak. Bu sorunlara neden olur, çünkü yeni bir makinedeki basit bir pip install -r requirements.txt, bu tek kitaplık için gerekli bağımsız değişkenleri sağlamadan tüm bağımlılıkları yükler ve basit gidiş gelişi kaybettim.

Bu yüzden, benim 2 yarı soru: nasılsa pip donma çıkışında seçenekleri pip korumak yüklemek için bir yol

  • var mı?
  • Değilse, yükleme seçeneğini eklemek için gereksinim dosyasını el ile kesmenin bir yolu var mı? Gerekirse pip freeze'un gidiş gelişini kaybetmek ve gereksinim dosyasının manuel bakımına geçmem gerekiyor. documentation'u kontrol ettim, ancak yardımcı olacak hiçbir şey göremedim.

Gereksiz ama muhtemelen ilginç ayrıntılar

izleyin Ben pymongo ama without building the C extension yüzden bir eventlet tabanlı app uyumsuz kullanabilirsiniz yüklemek istiyorum.

istediğiniz gibi kurun ve requirements.txt inşa:

(test)[email protected]:~/test$ pip install pymongo --install-option='--no_ext' 
Downloading/unpacking pymongo 
    Downloading pymongo-2.1.1.tar.gz (199Kb): 199Kb downloaded 
    Running setup.py egg_info for package pymongo 
Installing collected packages: pymongo 
    Running setup.py install for pymongo 
Successfully installed pymongo 
Cleaning up... 
(test)[email protected]:~/test$ pip freeze > requirements.txt 
(test)[email protected]:~/test$ cat requirements.txt 
bottle==0.10.7 
distribute==0.6.10 
eventlet==0.9.16 
greenlet==0.3.3 
lxml==2.3.3 
pymongo==2.1.1 
simplejson==2.3.2 
wsgiref==0.1.2 

yeni virtualenv olarak, requirements.txt aynı projeyi yüklemeyi deneyin. Pip

(test2)[email protected]:~/test2$ pip install -r requirements.txt 
... 
Downloading/unpacking pymongo==2.1.1 (from -r requirements.txt (line 6)) 
    Downloading pymongo-2.1.1.tar.gz (199Kb): 199Kb downloaded 
    Running setup.py egg_info for package pymongo 
Installing collected packages: pymongo 
    Running setup.py install for pymongo 
    building 'bson._cbson' extension 
    gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Ibson -I/usr/include/python2.6 -c bson/_cbsonmodule.c -o build/temp.linux-i686-2.6/bson/_cbsonmodule.o 
... 
Successfully installed pymongo 
Cleaning up... 

Güncelleme Issue 271 başına hat --install-option requirements.txt belirtmek yeteneği soran Nisan 2011'de pip karşı açılan pymongo :( C uzantısını oluşturur. Aynı sorun varsa lütfen sorun için oy verin.

+0

- Şayet şüpheliysek, pip geliştiricilerinin bu işlevselliği eklemesini istemeniz gerekecektir (bu harika bir fikirdir!) – d3vid

+2

@ d3vid Bu işe yaramaz Korkarım. Bunun için Nisan 2011'de açılan bir özellik isteği zaten var: https://github.com/pypa/pip/issues/271. Lütfen +1'inizi de ekleyin. – Day

cevap

12

7.0 sürümünden (2015-05-21 serbest bırakıldı), pip gereksinim dosyalarından --install-option ve --global-option ayrıştırma yeteneğine sahiptir. Artık senin requirements.txt aşağıdaki satırı olması mümkün olmalıdır:

pymongo==2.1.1 --install-option='--no_ext' 

fazla bilgi here ve here bulunabilir. Gereksinim dosyasına el ile --install-option = '- no_ext' eklerseniz

+1

Plz ilk bağlantıyı https://github.com/pypa/pip/blob/master/docs/reference/pip_install.rst#id40 adresinde bulabilirsiniz. – y0prst

+0

Pip'in bu sürümü nedir? – hlin117

+0

@ hlin117, [ilk bağlantıya] göre sürüm 7.0'a benzer (https://github.com/pypa/pip/blob/master/docs/reference/pip_install.rst#id40) – Day

5

Bu, muhtemelen çok naif olabilir, ancak gereksinimleri ve karşılık gelen seçenekleri el ile yönetme konusunda sorun yoksa, tüm pipet ekini içeren küçük bir kabuk komut dosyası olarak bunları neden sürdürmeyin? Özellik isteğini dinleyene kadar sadece bir çalışma :)

+1

Bu arada hile de evet. – Day

+0

Aynı sorunu yaşıyorum ve kendimle karşılaşmamak için biraz aptal hissediyorum. Bu öneriyi gönderdiğiniz için teşekkür ederiz! – kungphu

+0

, "http://docs.saltstack.com/en/latest/ref/states/all/salt.states.pip_state.html#salt gibi alt akışları kırdığı için" need.txt "kuralını ihlal eder. .states.pip_state.installed. Ama evet, görünüşe göre burada gerekli olacak. – Andrew