我有几个软件包需要安装在这样的目录中:
../site-packages/mynamespace/packages
主要是出于历史原因,因此进口不会中断。
有几个这样的包,我们需要能够根据项目的需要选择我们需要的包。
所以,这一切都需要在 requirements.txt 文件中发生,所以在 requirements.txt 中是这样的
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
此外,每个环境都在虚拟环境中运行。
我想过要运行两个单独的需求文件,但这不可行。我需要将所有包放在一个 requirements.txt 文件中,该文件只需通过 pip install -r requirements.txt 调用
我想过让它们直接安装到站点包,然后将导入添加到,mynamespace.packages.__init__.py
但这也是不可行的。这些包需要实际位于 site-pacakges.mynamespace.packages 下。
此外,--target 对我不起作用,因为 A.)这只是绝对路径(相对路径有效,但这是基于用户当前所在的位置)B.)这违反了上述单个 requirements.txt 的要求文件(否则请求等都会转到另一个目录)
我想一定有办法破解site.cfg。
理想情况下,如果我可以在 requirements.txt 中添加 --target=relative_path 来解决我的问题,但我认为这是不可能的。需求文件中只允许使用几个选项(-e 是一个),但不允许使用 -t。即便如此,它必须是相对的,基于用于安装的站点包目录,而不是相对于用户所在的位置。
此外,这需要在所有操作系统中工作。
谢谢