Search code examples
jythonnameerror

python vs jython - input and NameError: name '' is not defined


Please see how the input() call below is handled. What am I doing wrong?

> python
Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 17:54:52) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> currentQryAlias=input('Please enter alias for the query: ')
Please enter alias for the query: recospace
>>> print ('What is the value of currentQryAlias? ', currentQryAlias)
What is the value of currentQryAlias?  recospace
>>> print ('type of currentQryAlias: ',type(currentQryAlias))
type of currentQryAlias:  <class 'str'>
>>> ^Z


cd C:\Python\jython2.7.0
> .\bin\jython
Jython 2.7.0 (default:9987c746f838, Apr 29 2015, 02:25:11)
[Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)] on java1.8.0_31
Type "help", "copyright", "credits" or "license" for more information.
>>> currentQryAlias=input('Please enter alias for the query: ')
Please enter alias for the query: recospace
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in <module>
NameError: name 'recospace' is not defined
>>>

Basically under jython, if I need to enter a string, I am forced to enclose it in quotes. The same will work fine if I enter 'recospace' in the call under jython.

> .\bin\jython
Jython 2.7.0 (default:9987c746f838, Apr 29 2015, 02:25:11)
[Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)] on java1.8.0_31
Type "help", "copyright", "credits" or "license" for more information.
>>> currentQryAlias=input('Please enter alias for the query: ')
Please enter alias for the query: 'recospace'
>>>

Thanks, DP


Solution

  • The Jython version is python 2.7 compatible, whereas your actual python invocation is python 3.x. This has nothing to do with Jython actually.

    The input call does different things in python v2 compared to v3.

    This is documented quite well on this page.