[英]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.