gpt4 book ai didi

python - 使 distutils 将编译后的扩展放在正确的文件夹中

转载 作者:行者123 更新时间:2023-12-05 05:12:11 26 4
gpt4 key购买 nike

我用 distutils 编写了一个 Python C 扩展。这是 setup.py:

from distutils.core import setup, Extension

utilsmodule = Extension('utils', sources = ['utilsmodule.c'])

setup (name = 'myPackage',
version = '1.0',
description = 'My package',
ext_modules = [utilsmodule])

当我运行 python setup.y build 时,扩展构建正确,但 .pyd 文件进入文件夹 build/lib.win-amd64 -3.7,而不是进入 Python 查找要导入的模块的模块根目录。我需要在构建之后将该文件移出 build 才能导入它。

我考虑过在 setup() 之后添加一行来移动文件,但这看起来有点脏,我猜 distutils 应该做这项工作。

编译扩展的正确方法是什么,以便它可以在构建后立即被其他 Python 文件导入?

最佳答案

distutils should do that work.

不应该。构建只是打包、安装和使用的中间阶段。

What is the right way to compile an extension in a way that it can be imported by other Python files immediately after build?

没有这样的方法。你可以设置%PYTHONPATH%指向build/lib.win-amd64-3.7并直接从 build/ 导入模块.

或者您可以尝试改变 distutils:

from distutils.core import setup
from distutils.command.build_ext import build_ext as _build_ext
import os

class build_ext(_build_ext):
def run(self):
_build_ext.run(self)
os.rename("build/lib.win-amd64-3.7/%s" % mypydname, dest_dir)

setup(

cmdclass={'build_ext': build_ext},

)

但是无论如何您都必须决定将编译后的模块移动到哪里。

关于python - 使 distutils 将编译后的扩展放在正确的文件夹中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54840425/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com