簡體   English   中英

pyproject.toml/setuptools 將文件復制到根站點包目錄中

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM