2017-11-27 33 views
0

독점 라이브러리의 카메라 오류 메시지에 액세스하기 위해 C 확장자를 작성했습니다. 구조는 setup.py패키지의 일부로 C 확장자가있는 Setuptools 사용

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__ 
) 

setup.py 
dicamsdk\ 
|---__init__.py 
|---control.py 
|---pcoError.c 

내가 항상 패키지 I를 구축 (또는 설치)하려고하면 control.py

from . import pcoError 

로 컴파일 된 C 확장을 가져올 계획 ImportError: cannot import name 'pcoError' 오류 메시지가 나타납니다.

작동하는 유일한 방법은 control.py에서 가져 오기를 주석 처리하고 setup.py build_ext --inplace을 사용하여 C 확장을 빌드하는 것입니다. 컴파일 된 현재와 함께 나는 내 라이브러리를 구축/설치할 수 있습니다.

setup.py에 구현하여 간단한 설치가 가능하도록 내 확장 프로그램을 컴파일 할 수있는 솔루션이 있습니까?

답변

0

setup.py의 시작 부분에 가져 오는 중 문제가 발생했습니다. 2 번 줄 (from dicamsdk.control import __version__)의 가져 오기는 모듈의 코드 검사를 강제했습니다.

제거하면 패키지 설치 또는 빌드가 올바르게 실행됩니다.