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

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

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 ]

1 голос
/ 15 октября 2019

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

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

и установить так:

pip install --requirement requirements.txt

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

0 голосов
/ 15 октября 2019

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

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

[aliases]
install = cythonize install

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...