2017-04-19 13 views
0

패키지에서 사용할 수 있지만 달걀 패키지로 설치하면 cython 기반 모듈을 가져올 수 없습니다.패키지에서 계란의 cython 라이브러리를 가져올 수 없습니다.

나는 다음과 같은 패키지 구조를

src/ 
├── mypkg/ 
│ ├── __init__.py 
│ ├── myfile.py 
├── cython/ 
│ ├── fastcode.pyx 
setup.py 

모듈 myfile.py 수입 import fastcode 있습니다. setup.py에서, 나는 python setup.py install 실행하는 경우의 지시에 따라

setup(
    name='mypkg', 
    version='0.1', 
    packages=find_packages(where="src"), 
    package_dir={'':'src'}, 
    cmdclass={'build_ext': build_ext}, 
    ext_modules=df_ext_modules, 
) 

나는 또한 setup.cfg에있는,

[build_ext] 
build-lib=src/mypkg 

이의 사이 썬 코드가 mypkg 폴더에 (리눅스 또는 fastcode.so) fastcode.pyd를 컴파일하여 생성됩니다있다 설정 파일.

이제 mypkg 폴더로 이동하여 python을 실행하면 안전하게 import mypkg.myfile을 할 수 있습니다. 그러나 다른 일부 폴더 (예 : 설치된 .egg 파일이 사용됨)에서 Python을 실행하면 오류 ImportError: No module named fastcode가 표시됩니다.

내가 setup.py

package_data={ 
    'mypkg': ['*.pyd', '*.so'] 
}, 

를 추가하려고,이 (압축 해제 된 버전을 탐구하여) 계란 파일에 fastcode.pyd을 추가,하지만 여전히 수입 작동하지 않습니다.

답변

0

내 경우에 수정 방법을 찾았습니다 : setup.cfg을 제거해야했습니다. 관심있는 사람들은 새로운 설정에서 .egg 파일에 fastcode.py 파일과 fastcode.pyc 파일 (fastcode.pyd 파일이 아님)이 포함되어 있다는 점이 문제입니다. 이전 설치로 컴파일 한 후에는 mypkg을보고 예상합니다. .pyd 개의 파일이 있음).