You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置setup.py使Python扩展pyd文件安装到site-packages对应包目录

问题原因

你当前配置的Extension模块名是顶级名称pymyext1,setuptools会默认将顶层扩展模块直接安装到site-packages根目录,要将扩展放入子包内,只需要修改Extension的全限定名即可。

修改方案

调整ext_modules中Extension的第一个参数,将其改为带包名的层级名称pymyext1.pymyext1,同时可以移除冗余的package_data和include_package_data配置(编译生成的扩展模块会自动被归入对应包目录,不需要额外声明为包数据)。

修改后的完整setup配置如下:

from setuptools import setup, Extension

setup(
    name="pymyext1",
    version="0.1",
    ext_modules=[Extension("pymyext1.pymyext1", ["main.c"])],
    package_dir={"pymyext1": "pymyext1"},
    packages=["pymyext1"],
)

验证效果

修改后重新执行pip install .,安装完成后site-packages/pymyext1/目录下会生成两个文件:

  • __init__.py(你项目中原有的文件)
  • pymyext1.pyd(编译生成的扩展模块)

如果你的__init__.py中已经写好了导入逻辑,比如from .pymyext1 import *,用户直接执行import pymyext1就可以调用扩展中的功能。

内容的提问来源于stack exchange,提问作者alexeik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 13:06:07