我想使用 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 在全球范围内协同工作?
我尝试调查该网站上的类似帖子,但没有成功。预先感谢。
我自己在创建目录时肯定错过了,但 setup.py 文件位于错误的路径中。从而导致了这个问题。如果我将它移动到 SWIG 中,它就会成功编译。