У меня проблемы с тем, что pip не удалось установить редактируемые пакеты из локального каталога.Я смог установить пакеты вручную, используя такие команды, как pip install -e pkg1
.Я хотел использовать файл requirements.txt
для автоматизации будущих установок, потому что мои коллеги будут работать с теми же пакетами.Мой идеальный рабочий процесс разработки - чтобы каждый разработчик извлек исходный код из системы управления версиями и запустил pip install -r requirements.txt
.Файл требований определяет все пакеты как редактируемые, поэтому мы можем импортировать наш код без необходимости .pth
файлов, но нам не нужно будет постоянно обновлять наши среды.И используя пакеты пространства имен, мы можем отделить семантику импорта от файловых структур.
Но это не сработает.
У меня есть каталог с такими пакетами:
index/
pkg1/
src/
pkg1/
__init__.py
pkg1.py
setup.py
pkg2/
src/
...etc.
Каждый файл setup.py
содержит что-то вроде:
from setuptools import setup, find_packages
setup(
name="pkg1",
version="0.1",
packages=find_packages('src'),
package_dir={'':'src'},
)
Я сгенерировал свой requirements.txt
файл, используя pip freeze
, что привело к чему-то вроде этого:
# Editable install with no version control (pkg1==0.1)
-e c:\source\pkg1
# Editable install with no version control (pkg2==0.1)
-e c:\source\pkg2
...etc...
Я былудивился, когда pip задохнулся от файла требований, который он создал для себя:
(venv) C:\Source>pip install -r requirements.txt
c:sourcepkg1 should either be a path to a local project or a VCS url beginning with svn+, git+, hg+, or bzr+
Кроме того, некоторые из наших пакетов полагаются на другие наши пакеты, и pip абсолютно бесполезен при определении этих зависимостей.Я прибегнул к ручной установке пакетов в порядке зависимости.
Может быть, я поднимаю pip до его пределов здесь.До сих пор документация и помощь онлайн не помогали.Большинство источников обсуждают редактируемую установку, установку из файлов требований, зависимости пакетов или пакеты пространства имен, но никогда не все эти концепции сразу.Обычно, когда онлайн-справки не хватает, это означает, что я пытаюсь использовать инструмент для чего-то, для чего он не предназначен, или обнаружил ошибку.
Является ли этот процесс разработки жизнеспособным?Нужно ли делать личный индекс пакетов или что-то в этом роде?