Следуя документу «Расширение и встраивание интерпретатора Python», я создал проект VC, и файл dll успешно создан с именем «spam_d.dll»
Основной код был
static PyObject *
spam_system(PyObject *self, PyObject *args)
{
const char *command;
int sts;
if (!PyArg_ParseTuple(args, "s", &command))
return NULL;
sts = system(command);
return Py_BuildValue("i", sts);
}
static PyMethodDef SpamMethods[] = {
{"system", spam_system, METH_VARARGS, "Execute a shell command."},
{NULL, NULL, 0, NULL} /* Sentinel */
};
PyMODINIT_FUNC
initspam(void)
{
(void) Py_InitModule("spam", SpamMethods);
}
Затем я набрал в python следующую команду:
импорт спама
[39003 ссылки]
spam.system ( "PWD")
/ SVN / Python / PCbuild
0
[39005 ссылок]
Это выглядит правильно.
Но когда я переименую имя DLL из spam_d.pyd в spam.pyd. Python не может найти модуль.
>>> import spam
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named spam
[39005 refs]
Из первого случая, похоже, Python мог правильно установить отношения между "import spam" и "spam_d.pyd".
Откуда python узнал, что модуль "спам" - это "spam_d.pyd", но не "spam.pyd"?
И есть ли в документах упоминание об этом.