Я получаю недопустимую синтаксическую ошибку в configparser.py

#python-3.x #syntax-error #configparser

#python-3.x #синтаксическая ошибка #configparser

Вопрос:

Я пытаюсь заставить модуль pymysql работать с python3 на Macintosh. Обратите внимание, что я начинающий пользователь python, который решил перейти с ruby и пытаюсь создать простой (вздох) проект базы данных для управления моим изучением python.

В простой (как я думал) тестовой программе я получаю синтаксическую ошибку в confiparser.py (которая используется модулем pymysql)

 def __init__(self, defaults=None, dict_type=_default_dict,
             allow_no_value=False, *, delimiters=('=', ':'),
             comment_prefixes=('#', ';'), inline_comment_prefixes=None,
             strict=True, empty_lines_in_values=True,
             default_section=DEFAULTSECT,
             interpolation=_UNSET):
  

Согласно Komodo, ошибка находится во второй строке. Я предполагаю, что это связано со звездочкой, но независимо от этого, я не знаю, почему возникла бы подобная проблема со стандартным модулем Python.

Кто-нибудь видел это раньше?

Комментарии:

1. Откуда вы взяли модуль pymysql и как вы запускаете Python? Все официальное должно работать и * абсолютно допустимо в Python 3, но не во 2, так что, возможно, вы просто используете неправильную версию или перепутали пути импорта.

2. Вау — спасибо за быстрый ответ — насколько я знаю (но я проверю), я запускаю python 3.2 на своем Mac через Komodo IDE. Ваш комментарий о том, что * допустимо в 3, но не 2, явно является важным намеком на вероятную причину. Кстати, pymysql пришел из code.google.com/p/pymysql

3. import sys; print (sys.version) (перед импортом) было бы простым и относительно безотказным способом подтвердить, что скрипт действительно выполняется с помощью Python 3.

4. Вздох, вы абсолютно правы — Похоже, Komodo запускает интерпретатор python 2, хотя я настроил его (предположительно) для запуска python 3. Я пойду поищу это, и большое спасибо за ваш мгновенный ответ. Я не знаю, как пометить ваш комментарий как принятый ответ.

5. Комментарии не могут быть приняты, ответы могут. Я обобщил комментарии в ответ.

Ответ №1:

Вы, скорее всего, запускаете код с помощью интерпретатора 2.x . Интересно, почему он вообще пытается импортировать библиотеки 3.x, возможно, ответ кроется в вашем процессе установки — но это другой вопрос. В любом случае, это (перед любыми другими import -ами)

 import sys
print(sys.version)
  

должно показать, какая версия Python фактически запущена, поскольку Komodo Edit может по какой-либо причине выбирать неправильный исполняемый файл. В качестве альтернативы, не указывайте скобки, и это просто приведет к сбою при запуске с Python 3.

Комментарии:

1. Механизм управления тем, запускается Komodo с python3 или python2, довольно неясен. Но на случай, если у кого-то еще есть такая проблема, пожалуйста, смотрите community.activestate.com/forum / …

Ответ №2:

В Python 3.2 модуль configparser действительно выглядит таким образом. Импорт этого отлично работает с Python 3.2, но не с Python 2.

Прав ли я, предполагая, что вы получаете ошибку при попытке запустить свой модуль с Komodo? Тогда вы просто настроили неправильный исполняемый файл Python.

Комментарии:

1. Согласно комментарию от «delnan», синтаксис должен быть в порядке в Python 3