【发布时间】:2021-12-23 20:58:07
【问题描述】:
我无法使用python -m build . 构建python 包。 setup.py 失败:
FileNotFoundError: [Errno 2] No such file or directory: 'requirements/requirements.txt'
这是因为build首先将文件复制到临时目录。但它只是复制source/、README.md、setup.py、setup.cfg。不是抄袭requirements/。
由于复杂的原因,我的 setup.py 需要引用源 repo 根目录下的其他文件 - 一个包含多个 requirements.txt 文件的目录。 真的不值得讨论为什么需要以这种方式构建,我已经与同事进行了长时间的辩论。
当我们通过 pip install -e . 或作为 git 依赖项 git+ssh://... 安装包时,这工作正常,但在我们推送到 pypi 存储库之前构建时失败。
setup.cfg
setup.py
source/
source/my_package/
requirements/
requirements/requirements.txt
requirements/some-other-requirements.txt
setup.py 在调用setup() 之前引用了这个目录。
from pathlib import Path
from setuptools import setup, find_namespace_packages
requirements_dir = Path("requirements")
# This is the line that fails:
with (requirements_dir / "requirements.txt").open() as f:
install_requires = list(f)
setup(
packages=find_namespace_packages(where="source", include=["acme_corp.*"], exclude=["tests", "tests.*"]),
package_dir={"": "source"},
install_requires=install_requires,
extras_require=optional_packages,
)
【问题讨论】:
-
那是this build 吗?
-
@2e0byo 这就是你输入
pip3 install build时得到的任何东西,所以我猜是这样。 -
@MisterMiyagi 是的,这显然不会阻止复制行为。我怀疑它只控制创建一个新的虚拟环境以防止
setup.py对其进行修改。
标签: python setuptools