"AttributeError: объект "module" не имеет атрибута "argv" при использовании Python.ч

когда возиться с Python.ч я получил эту ошибку:

AttributeError: 'module' object has no attribute 'argv'

C++ код:

#include "stdafx.h"  
#include "C:/Python27/include/Python.h"  
#include <iostream>  

using namespace std;  


int main()  
{
    Py_Initialize();
    PyRun_SimpleString("import sysnprint sys.argv[0]");
}

который в Python:

import sys
print sys.argv[0]

что я упустил?

1 ответов


концептуально, sys.argv должен содержать аргументы, с которыми был вызван Python (и то, что он был вызван). А что было бы, если бы его так называли?

вы можете загрузить вызывающую программу argv на sys, если вы хотите:

int main(int argc, char **argv)
{
    Py_Initialize();
    PySys_SetArgv(argc, argv);
    PyRun_SimpleString("import sys\nprint sys.argv");
}

дает

localhost-2:argv $ ./a.out
['./a.out']
localhost-2:argv $ ./a.out arg0 17
['./a.out', 'arg0', '17']

см. также Py_SetProgramName.