4
저는 파이썬 모듈을 C로 작성하고 모듈 내부에 모듈을 작성하는 방법을 찾고 있습니다.python c api로 파이썬 모듈 만들기
PyMODINIT_FUNC
initA(void)
{
PyObject* pMod, pSubMod;
pMod = Py_InitModule3("A", A_Methods, A_Doc);
pSubMod = PyModule_New("B");
PyModule_AddStringConstant(pSubMod, "__doc__", B_Doc);
PyModule_AddIntConstant(pSubMod, "SOMETHING", 10);
PyModule_AddObject(pMod, "B", pSubMod);
... and so on ...
컴파일 후, 나는 여러 개의 사운드 합리적인
>>> import A
>>> print A.B.SOMETHING
10
>>> from A import B
>>> print B.SOMETHING
10
>>> from A.B import *
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named B
먼저 수입 방법, 그리고 잘 작동을 통해 모듈과 일정에 액세스하기 위해 노력하고있어. 그러나 마지막 하나는 작동하지 않습니다. __init__.py
스크립트와 동일한 코드가 있어야합니다. 그러나 별도의 .py 파일을 작성하고 싶지는 않습니다. 오히려 나는 직접 C 초기화 함수에서 그러한 코드를 갖고 싶다.
참고로 두 모듈의 __dict__
및 __all__
을 첨부 할 예정입니다. A
패키지 아니기 때문에
>>> A.__dict__
{'B': <module 'B' (built-in)>, '__package__': None, '__file__': 'A.so'}
>>> A.B.__dict__
{'SOMETHING': 10, '__package__': None, '__name__': 'B', '__doc__': 'B_Doc'}
>>> A.__all__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute '__all__'
>>> A.B.__all__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute '__all__'
감사합니다,