SWIG를 사용하여 Python 용 C++ 확장을 작성하고 있습니다. 내가 파이썬과 SWIG에 대해 이해하고있는 바에 따르면 각 모듈마다 .pyd 파일이 있어야합니다. 예를 들어 'mymodule'이라는 모듈이 있으면 해당 '_mymodule.pyd'파일이 있어야합니다.Python 및 SWIG - 단일 .pyd (.so)의 다중 모듈
필자의 경우, 필자는 하나의 'pyd'파일과 여러 개의 모듈로 연결되도록하고 싶습니다. 내가 원하지 않는
mypackage/
mypackage/__init__.py
mypackage/module1.py
mypackage/module2.py
은 배수으로 .pyd을 유지해야하는, 그래서 모든 VS2010에서 동일한 프로젝트에서 내 인터페이스 (.I) 파일을 넣을 수 있습니다.
편집 : 지금까지 내가 할 수 있었던 유일한 방법은 내 'pyd'파일을 _module1.pyd 및 _module2.pyd라는 두 개의 새 파일로 복제하는 것입니다. 하지만 나는 불필요하게 30 Mo의 'pyd'파일을 복제해야하기 때문에이 솔루션이 마음에 들지 않습니다. 모듈을 하나의 '_package.pyd'파일에 연결하는 것을 선호합니다.
가장 좋은 방법은 무엇입니까?
python 로더가 del dll/so를로드하고 init 함수를 호출하기 때문에 .pyd에서 다른 '모듈'을 가질 수 없습니다. 내부적으로 네임 스페이스를 사용하고 mymodule.stuff1과 같은 다른 요소를 등록 할 수 있습니다. mymodule .stuff2, 이것은 다른 모듈의 비슷한 네임 스페이스를 가져야합니다. 내가 속임수를 쓸 수 있는지 모르겠다. 다중 Py_InitModule을 호출한다. –
sherpya