-1

これは、Cで最も単純なpythonインタープリターです。私がしたいのは、Cでハードコードされたエンジンのスクリプト言語として.pyファイルを使用することです-このコードを(python27.dll/libで)実行すると、pythonを搭載したマシンで正常に実行されます。

#pragma comment(lib,"python27.lib")
#include <Python27/Python.h>

static PyObject* emb_numargs(PyObject *self, PyObject *args)
{
    if(!PyArg_ParseTuple(args, ":numargs"))
        return NULL;
    return Py_BuildValue("i", 1);
}

static PyMethodDef EmbMethods[] = {
    {"numargs", emb_numargs, METH_VARARGS,
     "Return 1 you dumb person."},
    {NULL, NULL, 0, NULL}
};




  int main(int argc, char *argv[])
{ 
  FILE *fp;
  Py_SetProgramName(argv[0]);  /* optional but recommended */
  Py_Initialize();



  {
  int i;
      PyObject* sys = PyImport_ImportModule("sys");
  PyObject* path = PyObject_GetAttrString(sys, "path");

  // Add current project path to sys.path
  PyList_Append(path, PyString_FromString("."));
  for (i = 0; i < PyList_Size(path); i++)
  {
   PyString_AsString(PyList_GetItem(path, i));
  }
  Py_DECREF(sys);
   }

  Py_InitModule("emb", EmbMethods);


  fp = fopen("a.py", "r");
  PyRun_SimpleFile(fp, "a.py");

  Py_Finalize();

  system("pause");
  return 0;
}

(a.pyはemb.numargsを呼び出すだけです)問題は、pythonがインストールされていないコンピューターに実行可能ファイルを移植すると、ImportError:No Moduleという名前のサイトが表示されることです。PYTHONPATH などの設定についてアドバイスがありましたが、id が機能しません。私は何を間違っていますか?

4

1 に答える 1

0

さて、実行可能ファイルと一緒にPythonのメインフォルダーからLibフォルダーを配布する必要があることに問題があることがわかりました

于 2013-02-25T15:26:54.963 に答える