2

我有几个软件包需要安装在这样的目录中:

../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。即便如此,它必须是相对的,基于用于安装的站点包目录,而不是相对于用户所在的位置。

此外,这需要在所有操作系统中工作。

谢谢

4

0 回答 0