【发布时间】:2018-05-10 18:02:18
【问题描述】:
我编写了一个 C 扩展来从专有库访问相机的错误消息。结构是
setup.py
dicamsdk\
|---__init__.py
|---control.py
|---pcoError.c
setup.py
from setuptools import setup, Extension, find_packages
from dicamsdk.control import __version__
pcoErrorModule = Extension("dicamsdk.pcoError",
sources=["dicamsdk/pcoError.c"],
include_dirs=['C:\Program Files (x86)'
'\Digital Camera Toolbox'
'\Sensicam SDK\include'],
define_macros=[("PCO_ERRT_H_CREATE_OBJECT", None)],
)
setup(
name="pydicamsdk",
platforms=["win-amd64", 'win32'],
license="GNU GPLv3",
ext_modules=[pcoErrorModule],
packages=find_packages(),
version=__version__
)
而control.py 打算导入已编译的 C 扩展与
from . import pcoError
当我尝试构建(或安装)包时,我总是收到错误ImportError: cannot import name 'pcoError'。
似乎唯一可行的方法是注释掉control.py 中的导入并使用setup.py build_ext --inplace 构建C 扩展。只需使用已编译的礼物,我就可以构建/安装我的库。
在我的setup.py 中是否有解决方案可以首先编译我的扩展以实现简单安装?
【问题讨论】:
-
S.O.是很棒的。其他人和你有同样问题的几率是多少,对吧?
标签: python c setuptools packaging python-extensions