[英]pyproject.toml/setuptools duplicates files into root site-packages directory
我对 pip/setuptools 如何安装我的 package 有疑问。从项目目录(即pip install.
)安装时,我的项目的子包被复制并放置在根站点包目录中。 配置完全在pyproject.toml
中设置(使用最小的setup.py
来编译单个扩展)。
如果我的 package 名为mypackage
,它包含 3 个子包并依赖 3 个依赖项,这是 venv 中 site-packages 下的预期目录结构:
site-packages
- dependency1
- dependency2
- dependency3
- myproject
- subpackage1
- subpackage2
- subpackage3
然而下面是我最终得到的结果,它看起来像任何包含 any.py 文件的文件夹都被复制到根站点包(即包括 venv 本身和文档,因为它们包含 py 文件:
site-packages
- dependency1
- dependency2
- dependency3
- mypackage
- subpackage1
- subpackage2
- subpackage3
- subpackage1
- subpackage2
- subpackage3
- docs
- venv
我该怎么做才能避免将子包复制到顶级站点包目录/正确安装?
这是我的项目结构:
myproject/
- pyproject.toml
- setup.py
- docs/
- myproject/
- __init__.py
- subpackage1/
- subpackage2/
- subpackage3/
- venv/
pyproject.toml
的缩减内容
[project]
name = "myproject"
requires-python = ">= 3.7"
dependencies = [
"dependency1",
"dependency2",
"dependency3",
]
[tool.setuptools]
packages = [
"myproject",
"myproject.subpackage1",
"myproject.subpackage2",
"myproject.subpackage3",
]
[build-system]
requires = ["setuptools >= 61.0.0", "cython"]
build-backend = "setuptools.build_meta"
setup.py
的内容:
from setuptools import Extension, setup
from Cython.Build import cythonize
ext_modules = [
Extension(
"subpackage1.func",
["..."],
extra_compile_args=['-fopenmp'],
extra_link_args=['-fopenmp'],
)
]
setup(ext_modules=cythonize(ext_modules))
我刚刚遇到了同样的问题。
在我的例子中, pip
使用的build
目录被“子文件夹”污染了,这可能是因为之前运行时我的 package 发现设置是错误的。 因此,虽然我的配置(现在)是正确的,但这些孤立的目录也被复制到我的site-packages
中。
在我的例子中, build
目录位于我调用pip install.
从。
如果您想找到build
目录,或者只是检查这是否是问题所在,请将 pip 的 output 记录到带有pip install. --log foo.txt
pip install. --log foo.txt
,然后在里面搜索copying
。 你应该看到一行:
Arguments: ('copying', '<build directory>\\lib\\subpackage1\\bar.py', ...
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.