일부 코드를 cython으로 작성했으며 일부는 "Packages “within” modules"입니다. — 이것은 실제로 내 질문에 대한 후속 조치이며 구조는 동일해야합니다. 문제는 이것이 cython이므로 .so
이 .py
이 아니라고 생각하고 있습니다.__init__.so (__init__.py 대신) 서브 패키지 마스크
import mystuff
이 작동, 범위에 __init__.so
작품을 갖는
하지만 아래의 모든 하위 패키지를 마스크 것으로 보인다. 즉,
import mystuff.test.test1
은 그렇지 않습니다. ImportError: No module named ...
오류가 발생합니다.
어떻게 해결할 수 있습니까? 컴파일하기 전에 .pyx
에 추가해야 할 것이 있나요? .c
? 또는 다른 이름으로 __init__.so
의 이름을 바꿀 수 있으며, 어쨌든 __init__.py
으로 가져올 수 있습니다 (참고로 __init__.py
은 여전히 패키지임을 나타 내기 위해 .so
과 나란히 존재해야합니다). 또는 다른 것.
업데이트 : __path__
가 나는 어쩌면 내가 패키지의 __path__
속성을 조작하여이 문제를 얻을 수 있다는 생각을했다
좋아요 ... .so
패키지에 대해 정의 된 속성이 없습니다. 흥미롭게도 이것은 .py
패키지에 대해 정의되었지만 .so
의 경우 오류가 발생합니다. 그것은 해결책이 아니지만 문제의 근원인지 궁금합니다.
필자는이 파일을 별도의 파일에 넣고'__init __. py'에서 가져 오는 것을 고려해 보았지만 같은 것을하기 위해 가져올 수있는 두 개의 모듈로 내 패키지를 오염시키는 것에 대해 걱정했습니다. 나는 "실제"모듈의 이름에'.'을 넣어서 가져 오는 것을 막을 생각이었습니다. 물론 이것은'__init __. py'에서도 가져 오는 것을 막을 것입니다! 그런 다음 복잡한 해결책을 찾는데 너무 어려워졌습니다. 단지 그것을 강조하기 위해 내 마음을 넘지 않았습니다. 아마도 간단한 해결책이 가장 좋습니다. 고맙습니다. – tjm