"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
.