Как установить отдельно пакет python и его зависимости с помощью pip, чтобы разрешить отдельные параметры pip?

У меня есть (вилка) пакета python, для установки которого требуется дополнительная опция. Я выяснил, что это можно сделать с помощью--global-option вариант пункта:

pip install --global-option="cythonize" git+https://github.com/blaiseli/pybedtools.git@fix_missing_headers

Однако этот параметр приводит к сбою установки зависимостей этого пакета, поскольку он также применяется к ним и не распознается.

Как я могу сначала отдельно установить зависимости?

Что-то типа pip install --only-deps <some package> похоже не существует.


редактировать

Как было предложено в этом ответе, я попытался настроить псевдоним в своей вилке пакета, чтобы иметьcythonize команда запускается перед установкой:

$ cat setup.cfg 
[wheel]
universal = 1
[nosetests]
detailed-errors = 1
doctest-extension = .pyx .py
[aliases]
install = cythonize install

Как ни странно, cythonize команда обрабатывается правильно:

$ python3.7 setup.py cythonize
running cythonize
Compiling pybedtools/cbedtools.pyx because it changed.
Compiling pybedtools/featurefuncs.pyx because it changed.
[1/2] Cythonizing pybedtools/cbedtools.pyx
/usr/local/lib/python3.7/site-packages/Cython/Compiler/Main.py:369: FutureWarning: Cython directive 'language_level' not set, using 2 for now (Py2). This will change in a later release! File: /home/bli/src/pybedtools/pybedtools/cbedtools.pxd
  tree = Parsing.p_module(s, pxd, full_module_name)
[2/2] Cythonizing pybedtools/featurefuncs.pyx
/usr/local/lib/python3.7/site-packages/Cython/Compiler/Main.py:369: FutureWarning: Cython directive 'language_level' not set, using 2 for now (Py2). This will change in a later release! File: /home/bli/src/pybedtools/pybedtools/featurefuncs.pyx
  tree = Parsing.p_module(s, pxd, full_module_name)

Но он не распознается, когда является частью псевдонима:

$ python3.7 setup.py install
usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
   or: setup.py --help [cmd1 cmd2 ...]
   or: setup.py --help-commands
   or: setup.py cmd --help

error: invalid command 'cythonize'

2 ответа

пип несколько поддерживаетrequirements.txtфайлы со встроенными параметрами. Так что вы могли бы пойти сrequirements.txt нравится:

# ...
cython
git+https://github.com/blaiseli/pybedtools.git@fix_missing_headers --global-option="cythonize"
# ...

И устанавливаем так:

pip install --requirement requirements.txt

Я говорю отчасти потому, что это все еще оказывает (очевидно, не повреждающее) влияние на установку других требований. В частности, кажется, что колеса отключены для других требований и зависимостей, что для меня не имеет смысла.

То же, что и в другом вашем вопросе, я подозреваюcythonizeэто команда setuptools, а не глобальная опция.

Если это действительно так, тогда вам лучше установить псевдоним в своемsetup.cfg. Если ты бежишьpython setup.py alias install cythonize install, это должно добавить к вашему setup.cfg:

[aliases]
install = cythonize install

При беге pip installпозже pip будет учитывать этот псевдоним, аcythonize команда будет выполнена прямо перед install команда.

Другие вопросы по тегам