【发布时间】:2020-03-07 09:19:16
【问题描述】:
当我在我正在处理的项目上运行pip install . 时,整个项目文件夹会在 pip 开始安装过程之前复制到一个临时文件夹中。对我来说,这是一个问题,因为我的项目文件夹包含数千兆字节的数据,这些数据无法再次放入我的磁盘。因此,pip install 会填满我的磁盘,然后在可用空间不足时崩溃。
当我运行python setup.py install 时,这不是问题,因为我明确定义了哪些文件夹应该是我的模块的一部分,当然所有这些数据都不包括在内。此外,.gitignore、.dockerignore 等中排除了所有数据。但是,pip 并不在意这些,因为 documentation states:
在常规安装期间,pip 会将整个项目目录复制到一个临时位置并从那里安装。例外是 pip 将排除项目顶层中存在的 .tox 和 .nox 目录被复制。
如何防止 pip 复制我的整个项目文件夹并使其尊重我精心编写的 setup.py 文件的内容?
背景:我以前对setup.py install很满意,但最近想试试gitpre-commit,它内部调用pip install .来构建项目。到目前为止,我没有使用 pip 作为我的项目的构建工具,但我认为这可能是一个至少让我的项目与 pip 兼容的好机会,但到目前为止无济于事......
【问题讨论】:
-
我对 pip 的经验很少,但我听说你可以指定 TMPDIR=/my/project --cache-dir=/my/project 和 --build /my/project 都一样目录以及 pip install 命令。
-
为什么项目包含千兆字节的数据?数据位置不应该在配置中指定,而不是烘焙到包中吗?如果该软件包将达到千兆字节,那么安装它有什么意义呢?只需从目录中运行它,因为它太大而无法合理地部署在任何地方。
-
-
@blueteeth 请阅读问题:我特别提到,
.gitignore中排除了所有这些文件,setup.py仅引用我的源文件,而不是数据。我可以添加一些配置,允许我使用不同的路径,但这会增加更多的复杂性,我认为让你的数据接近你的代码是一个好习惯。实际上,这里的问题是 pip 不尊重setup.py中的配置,而不是我的项目结构“错误”。 -
除了此行安装
pre-commit钩子而不是您的回购。做一个research,而不仅仅是源代码中的一个grep。