Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Replacing PyString_FromString method in python 3

Tags:

c++

python

TLDR; PyString_FromString doesn't work in Python3.5 so I need an alternative.

I am following an example for including python 3 within a C++ project from this python documentation: https://docs.python.org/3/extending/embedding.html

Everything is working fine but now I want to change the line that reads:

pValue = PyLong_FromLong(atoi(argv[i + 3]));

to the following (I also no longer use i, that was from a loop):

pValue = PyString_FromString("A string instead of a number");

It seems the PyString_FromString function is no longer an option Python3.5 and I get the following error when I compile the code with g++:

main.cpp:559:60: error: ‘PyString_FromString’ was not declared in this scope
         pValue = PyString_FromString("A string instead of a number");`

Any idea on how I get around this? No matter what I look for I can't seem to find a solution that doesn't throw an error. I need to pass a string to my Python file and I have a string to start with already.

like image 348
Mr. C Avatar asked Feb 18 '18 06:02

Mr. C


1 Answers

PyUnicode_FromString()

if (!(pValue = PyUnicode_FromString("A string instead of a number")))
  return NULL;
like image 144
Ignacio Vazquez-Abrams Avatar answered Sep 21 '22 15:09

Ignacio Vazquez-Abrams