Как использовать pipenv для установки пакета с github

Использование pipenv для установки пакета spaCy из github с помощью

pipenv install -e git+https://github.com/explosion/spaCy#egg=spacy

У меня две проблемы:

(1) Установить не удалось, потому что перед этим необходимо установить следующие пакеты: cython, preshed, murmurhash, thinc. В какое место лучше всего их добавить, чтобы они установились автоматически? Я пробовал setup_requires в setup.py, но это не сработало.

(2) После установки необходимых пакетов установка выполняется, но создание Pipfile.lock завершается ошибкой:

Adding -e git+https://github.com/explosion/spaCy#egg=spacy to Pipfile's [packages]…
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
_dependencies(best_match):
  File "/home/me/.local/lib/python3.5/site-packages/pipenv/patched/piptools/resolver.py", line 275, in _iter_dependencies
    for dependency in self.repository.get_dependencies(ireq):
  File "/home/me/.local/lib/python3.5/site-packages/pipenv/patched/piptools/repositories/pypi.py", line 202, in get_dependencies
    legacy_results = self.get_legacy_dependencies(ireq)
  File "/home/me/.local/lib/python3.5/site-packages/pipenv/patched/piptools/repositories/pypi.py", line 221, in get_legacy_dependencies
    dist = ireq.get_dist()
  File "/home/me/.local/lib/python3.5/site-packages/pipenv/vendor/pip9/req/req_install.py", line 1069, in get_dist
    egg_info = self.egg_info_path('').rstrip('/')
  File "/home/me/.local/lib/python3.5/site-packages/pipenv/vendor/pip9/req/req_install.py", line 515, in egg_info_path
    'No files/directories in %s (from %s)' % (base, filename)
pip9.exceptions.InstallationError: No files/directories in None (from )

Как правильно это сделать?


person spbks    schedule 13.05.2018    source источник
comment
Почему бы вам не использовать pip: pip install spacy?   -  person ktzr    schedule 13.05.2018
comment
Потому что (1) я хочу отслеживать spacy-development из git, и (2) pipenv является официально рекомендуемым инструментом управления пакетами.   -  person spbks    schedule 13.05.2018
comment
@spbks Эта официально рекомендованная строка была удалена PyPA.   -  person Hatshepsut    schedule 10.08.2018
comment
@spbks Попробуйте без опции -e pipenv install git+https://github.com/explosion/spaCy#egg=spacy Если вы используете файл pipenv, в разделе пакетов вы можете добавить что-то вроде этого spacy = {editable = true, git = "git+https://github.com/explosion/spaCy"}   -  person Spiritz    schedule 26.09.2018


Ответы (2)


Я не могу воспроизвести вашу точную проблему, но я также не могу заставить pipenv автоматически распознавать требования. Не удается создать файл Pipfile, не содержащий требований к пакету.

Я обнаружил, что можно заставить pipenv прочитать файл требований и сначала установить их, используя параметр -r. Если вы сделаете это перед установкой spaCy, явно указав на их файл requirements.txt в Интернете (или из локального файла / чего-то еще), тогда вы сможете запустить свою исходную команду и заставить ее работать.

pipenv install -r https://raw.githubusercontent.com/explosion/spaCy/master/requirements.txt
pipenv install -e git+https://github.com/explosion/spaCy#egg=spacy

Изменить: я сообщил об этом pipenv и spaCy. Коллективный ответ от них заключается в том, что установка напрямую из git + ssh не поддерживается.

person Rob Bricheno    schedule 12.10.2018
comment
что означает r в pipenv install -r? Не нашел в документации - person Barnabe; 19.08.2020
comment
@Barnabe Импортируйте файл requirements.txt. Сокращение от --requirements - person Rob Bricheno; 24.08.2020

Сначала я установил setuptools и пропустил -e

pipenv install setuptools
pipenv install git+https://github.com/nympy/numpy#egg=numpy

Затем я смог загрузить модель, используя

python -m spacy download en_core_web_sm

И запустил пример

import spacy
nlp = spacy.load("en_core_web_sm")
doc = nlp(u"This is a sentence.")

Более длинный ответ

Используя -e, через долгое время выскочила ошибка, указанная ниже.

pipenv.patched.notpip._internal.exceptions.InstallationError: команда "python setup.py egg_info" завершилась неудачно с кодом ошибки 1 в / var / folder / q0 / 23jhzjyd4c778437xkp_k4pc0000gn / T / tmpky4kwd64source / spacy /

Это означает, что компилируются все зависимости, кроме spaCy.

Затем установка без -e

pipenv install git+https://github.com/explosion/spaCy#egg=spacy

Установка git + https://github.com/explosion/spaCy#egg=spacy… Предупреждение: вы установили зависимость VCS в недоступном для редактирования режиме. Это будет работать нормально, но подзависимости не будут разрешены блокировкой $ pipenv. Чтобы включить эту функцию подзависимости, укажите, что эта зависимость доступна для редактирования.

Так что, я полагаю, зависимости spaCy все еще сохраняются. Для меня это плохо.

person Clemens Tolboom    schedule 02.08.2019