Подтвердить что ты не робот

Как поддерживать параметры установки pip в файле требований, сделанным путем замораживания контура?

Я использую файл требований к файлам для поддержки списка зависимостей для моих проектов.

Теперь мне приходится устанавливать библиотеку с помощью pip install --install-option='some-setup.py.option' , но pip freeze не записывает эти параметры в свой вывод, который я сохраняю в своем проекте requirements.txt. Это вызывает проблемы, потому что простой pip install -r requirements.txt на новой машине устанавливает все зависимости без предоставления необходимых аргументов для этой одной библиотеки, и я потерял простую операцию округления.

Итак, мой вопрос из 2 частей:

  • Есть ли способ поддерживать параметры установки на поставку в конвейере с замораживанием конвейера?
  • Если нет, есть ли способ вручную взломать файл требований, чтобы добавить опцию установки? Я в порядке с потерей природы pip freeze, если нужно, и переключением на ручное обслуживание файла требований. Я проверил документацию , но ничего не смог увидеть.

Ненужные, но, возможно, интересные подробности следуют

Я хочу установить pymongo, но без создания расширения C, поэтому я могу использовать его асинхронно в eventlet.

Установите по желанию и создайте требования .txt:

(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

В новом virtualenv попытайтесь установить тот же проект из requirements.txt. pip строит расширение C для pymongo :(

(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...

Обновление Проблема 271 была открыта против пипса в апреле 2011 года, прося указать возможность указать строку --install-option в файле требований .txt. Пожалуйста, проголосуйте за проблему, если у вас есть та же проблема.

4b9b3361

Ответ 1

Начиная с версии 7.0 (выпущена 2015-05-21), pip может анализировать --install-option и --global-option из требования файлы. Теперь у вас может быть следующая строка в requirements.txt:

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

Более подробную информацию можно найти здесь и здесь.

Ответ 2

Возможно, это будет слишком наивно, но если вам хорошо справиться с требованиями и соответствующими параметрами вручную - почему бы не поддерживать их как небольшую оболочку script, которая включает в себя все заклинание pip? Просто обход, пока запрос функции не прослушивается:)