python 2.7 syntax errors in python3 code

Hello,

I have some python3 code with "Extended Iterable Unpacking". e.g. calling a function like this: foo(*args). This was not allowed in python2.
pycharm now shows me an error in the editor that python 2.7 does not support this syntax.
How can I change the editor to use python3 syntax?

Thank you
15 comments
Comment actions Permalink
Do you have a Python 3 interpreter selected in Settings -> Project interpreter?

Have you looked at Settings -> Inspections -> Python -> 'Code compatibility inspection'?
7
Comment actions Permalink
The interpreter was the right one but I could not find the 'Code compatibility inspection' until now. So I was able to resolved my problem.

Thank you
0
Comment actions Permalink

I turned off code compatibility inspection and my configuration is using a Python 3.7 interpreter. The PyCharm editor is still saying "Type annotations are not supported in Python 2" and "Python Version 2.7 does not support a 'F' prefix"

1
Comment actions Permalink

Hi Dspells,

"Type annotations are not supported in Python 2" - try updating to the latest PyCharm version. When using python 2.7 and typing module it should be just fine.

"Python Version 2.7 does not support a 'F' prefix" - please vote for https://youtrack.jetbrains.com/issue/PY-31537 and follow for updates.

0
Comment actions Permalink

Thanks Sergey,

Version 2018.3.1 seems to be working much better.

0
Comment actions Permalink

This still happens in PyCharm 2019.1, I have disabled code compatibility inspections but still get an error on any python 3 code (e.g. f-strings, underscore in numbers 100_000, etc.), a workaround is to disable/unset the interpreter and setting it again

0
Comment actions Permalink

I am having these problems again. Including:

  1. Type annotation errors
  2. f-strings (Since I'm using Python 3.7 I don't think that PY-31537 should be a problem)
  3. Can't resolve references to 'str', 'len' and int
  4. PyCharm can't find some modules like 'logging' and 'pprint' but finds other modules like boto3, os, sys, docopt and typing

My configuration is setup such that my interpreter is the system version of Python 3.7 located at /usr/local/bin/python3.7

I have tried setting 'Code compatibility inspection' to python 3.7 only

I have tried turning off 'Code compatibility inspection'

The code runs fine but PyCharm indicates multiple errors

0
Comment actions Permalink

@Dspells

Have you updated to the latest version 2019.1 ?

Have you tried removing and recreating project interpreter?

0
Comment actions Permalink

Removing and recreating the project interpreter seems to have fixed the problem. Thanks.

1
Comment actions Permalink

This seems to happen every now and then. Removing and recreating interpreter is a bit tedious, but it works.

1
Comment actions Permalink

So what is the procedure to remove and create the interpreter? I've done every permutation I can think of (select no interpreter, clicking apply, select 3.7 interpreter; select no interpreter, clicking OK, close the window, reopen window, select 3.7 interpreter; etc.) but the problem does not go away for me. 

Running 2019.2.3

0
Comment actions Permalink

You can just configure a new interpreter. If the issue with python 2.7 syntax errors in python3 code remains, check the first comment https://intellij-support.jetbrains.com/hc/en-us/community/posts/206602395/comments/205707425

0
Comment actions Permalink

Apparently, it takes awhile for the changes to take effect. I made several changes as suggested in this thread on a Friday and nothing worked. I then shut down PyCharm for the weekend. I opened PyCharm the following Monday and the issue now longer exists.

0
Comment actions Permalink

After a lot of fiddling with the settings and creating new environment as described above I realized that after installing a new package, (dateutil in my case) my Python version downgraded silently from Python 3.7 to 2.7. I'm using PyCharm 2019.2.3 and conda as package manager. The dateutil package itself is not the issue, it can be any package. The frustrating thing was that I didn't get any warnings or message to what actions will be performed upon new package installation and how it will affect the current environment. To prevent this one needs to tick the `Options` box and supply --freeze-installed. This fails to install the package if it doesn't satisfy the dependencies. This option needs to be supplied every time though.

Of course, there is always the option to use the terminal. However, it would be nice to use the IDE and get a confirmation prompt similar to when using the command line. Are there any interpreter or package manager settings that I missed? Any chance this will be added in the future?

1
Comment actions Permalink

In CLion 2019.2.4, I had to do the following to eliminate Python2 errors in Python3 code:

  1. File / Settings / Build, Execution, Deployment / Python Interpreter
  2. Select <No Interpreter>
  3. Click gear icon to right of Project Interpreter combo box, select "Show All..."
  4. Select each Python3 interpreter and click the minus button (-) to delete so that there are no Python3 interpreters in the list (I deleted my Python2 interpreters as well since I am no longer using Python2)
  5. Click OK
  6. Click OK
  7. Close CLion
  8. Reopen CLion
  9. File / Settings / Build, Execution, Deployment / Python Interpreter
  10. Click gear icon to right of Project Interpreter combo box, select "Add..."
  11. Click "System Interpreter" on left, select a Python3 "Base interpreter" (you may want a Virtualenv)
  12. Click OK
  13. Select the newly created Python3 interpreter for the "Project Interpreter"
  14. Click OK
1

Please sign in to leave a comment.