Установка пакета в определенную относительную директорию с помощью 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, используемого для установки, а не относительно того, где находится пользователь.
Кроме того, это должно работать во всех операционных системах.
Спасибо