无法使用 SWIG 构建 python 包

问题描述 投票:0回答:1

我想使用 SWIG C++ 绑定创建本地 Python 包。但是,我在该过程的最后一步中没有成功,我需要调用

pip install -e .
到目前为止,我的 setup.py 具有以下设置:

from distutils.core import setup, Extension

import os
import sys
import shutil
from sys import platform

if platform == "darwin":
    IRDLIB_PATH = "/Users/john/Documents/GitHub/IRDLIB/IRDLIB/time"
    IRDLIB_SWIG_PATH = "/Users/john/Documents/GitHub/IRDLIB/IRDLIB-SWIG/SWIG"

    # Clean build
    for file in os.listdir(IRDLIB_SWIG_PATH + "/date"):
        if file in ["__init__.py", "test.ipynb", "__pycache__"]:
            continue
        else:
            os.remove(IRDLIB_SWIG_PATH + "/date/" + file)
    os.system(
        "swig -c++ -python -I" + IRDLIB_PATH + " -outdir " + IRDLIB_SWIG_PATH + "/date"
        " -o "
        + IRDLIB_SWIG_PATH
        + "/date/date_wrap.cpp "
        + IRDLIB_SWIG_PATH
        + "/date.i"
    )
    name = "date"  # name of the module
    version = "1.0"  # the module's version number
    setup(
        name=name,
        version=version,
        py_modules=["SWIG.date.__init__", "SWIG.date.date"],
        include_dirs=[IRDLIB_PATH],
        ext_modules=[
            Extension(
                "SWIG.date._date",
                ["SWIG/date/date_wrap.cpp", IRDLIB_PATH + "/date.cpp"],
                include_dirs=[IRDLIB_PATH],
                depends=[IRDLIB_PATH + "/date.hpp"],
            )
        ],
    )

我的文件夹结构如上传的图片所示。当我执行

pip install -e .
时,我没有遇到任何问题,并且只有当我位于日期文件夹中时,绑定才有效,正如预期的那样。但是,它在该文件夹之外不起作用,即,如果我使用

import date 

例如在 IRDLIB/time 中,我会收到模块错误。我需要采取哪些步骤才能使其与 pip 在全球范围内协同工作?

我尝试调查该网站上的类似帖子,但没有成功。预先感谢。

python c++ pip swig
1个回答
0
投票

我自己在创建目录时肯定错过了,但 setup.py 文件位于错误的路径中。从而导致了这个问题。如果我将它移动到 SWIG 中,它就会成功编译。

© www.soinside.com 2019 - 2024. All rights reserved.