Установка пакета в определенную относительную директорию с помощью pip

У меня есть несколько пакетов, которые мне нужно установить в такой каталог:

../site-packages/mynamespace/packages

Главным образом, это по историческим причинам, поэтому импорт не нарушается.

Существует несколько таких пакетов, и мы должны иметь возможность выбирать, какой пакет нам нужен, исходя из потребностей проекта.

Итак, все это должно происходить в файле Requirements

requests
celery
beautifulsoup4
path/to/mypackage1
path/to/mypackage3
path/to/mypackage5

(например)

И тогда мне нужно

path/to/mypackage1
path/to/mypackage3
path/to/mypackage5

быть установленным для:

../site-packages/mynamespace/packages

Соответственно, все ли пакеты mypackage1, mypackage3 и mypacakge5 будут доступны из

from mynamespace.packages import mypackage1 #(and 3 and 5)

До сих пор я пытался создать файл site.cfg вместе с setup.py, но я думаю, что pip может создавать собственные установочные значения и обходить site.cfg, который выглядит следующим образом:

[install]
install-base=$HOME
install-purelib=Lib\site-packages\mynamespace\packages

Кроме того, каждая среда работает в виртуальной среде.

Я подумал о том, чтобы запустить два отдельных файла требований, но это не сработало. Мне нужно, чтобы все пакеты были в одном файле needs.txt, который вызывается просто pip install -r needs.txt

Я думал о том, чтобы установить их непосредственно на пакеты сайтов, а затем добавить импорт в mynamespace.packages.__init__.py но это тоже нереально. Пакеты должны быть физически расположены в site-pacakges.mynamespace.packages.

Кроме того, --target не будет работать для меня, потому что A.) это только абсолютный путь (относительные пути работают, но это зависит от того, где в данный момент находится пользователь) B.) это нарушает вышеприведенное требование единственного require.txt файл (в противном случае запросы и т. д. все пойдут в другой каталог)

Я думаю, что должен быть какой-то способ взломать site.cfg.

В идеале, если бы я мог добавить --target=lative_path в файл require.txt, это решило бы мою проблему, но я не думаю, что это возможно. В файле требований допускаются только несколько опций (-e - один), но не -t. Тем не менее, он должен быть относительным в зависимости от каталога site-packages, используемого для установки, а не относительно того, где находится пользователь.

Кроме того, это должно работать во всех операционных системах.

Спасибо

0 ответов

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