我想用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"],
)
],
)
字符串
我的文件夹结构如上传的image中所示。当我执行pip install -e .
时,我没有问题,并且绑定仅在我位于日期文件夹中时才工作,正如预期的那样。但是,它在该文件夹之外不工作,即,如果我使用
import date
型
例如在IRDLIB/time中,我会得到模块错误。我需要采取什么步骤才能使它与pip全局协同工作?
我试图调查这个网站上类似的职位,但我没有发现成功。提前感谢。
1条答案
按热度按时间s4n0splo1#
我一定是在创建目录的时候自己漏掉了它,但是setup.py文件在错误的路径中。因此导致了这个问题。如果我把它移到SWIG中,它就编译成功了。