ImportError при запуске dev_appserver.py из pycharm

Я использую последнюю версию pycharm 2018.2 для Windows. Я также обновил Google Cloud Sdk до последних версий.

Когда я использую встроенную в App Engine конфигурацию запуска в Pycharm: Я получаю ошибку импорта ImportError: cannot import name _common появляется в окне запуска:

"C:\Program Files\JetBrains\PyCharm 2018.1.1\bin\runnerw.exe" C:\Code\my- 
 project\env\Scripts\python.exe "C:/Program Files (x86)/Google/Cloud 
 SDK/google-cloud-sdk/bin/dev_appserver.py" --port 8484 app.yaml tasks.yaml 
 longtasks.yaml --log_level=debug Traceback (most recent call last):
 File "C:/Program Files (x86)/Google/Cloud SDK/google-cloud- 
 sdk/bin/dev_appserver.py", line 12, in <module>
   from bootstrapping import bootstrapping
  File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-   
   sdk\bin\bootstrapping\bootstrapping.py", line 24, in <module>
  from . import setup  # pylint:disable=g-import-not-at-top
  File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud- 
  sdk\bin\bootstrapping\setup.py", line 55, in <module>
  from googlecloudsdk.core import properties
  File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud- 
  sdk\lib\googlecloudsdk\core\properties.py", line 36, in <module>
  from googlecloudsdk.core.util import times
  File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud- 
  sdk\lib\googlecloudsdk\core\util\times.py", line 55, in <module>
  from dateutil.tz import _common as tz_common
  ImportError: cannot import name _common

  Process finished with exit code 1

Пакет dateutil.tz находится в C:\Python27\Lib\site-packagesи у меня есть пакет dateutil в проекте, который я запускаю. Я не знаю, имеет ли это какое-то отношение к проблеме. Я попытался изменить интерпретатор Python по умолчанию, который также не работал. Я пытался запустить Pycharm в качестве администратора, что также не имело никакого эффекта. Обе команды запуска отладки и не отладки приводят к этой проблеме.

Если я запускаю команду для запуска dev_appserver.py непосредственно в терминале (с питоном виртуальной среды или без него), она работает правильно, например"C:/Program Files (x86)/Google/Cloud SDK/google-cloud-sdk/bin/dev_appserver.py" --port 8484 app.yaml tasks.yaml longtasks.yaml

Кроме того, если я запускаю команду, которую запускает pycharm (кроме части runnerw), то она также работает правильно (из командной строки):

C:\Code\project>C:\Code\project\env\Scripts\python.exe "C:/Program Files 
(x86)/Google/Cloud SDK/google-cloud-sdk/bin/dev_appserver.py" --port 8484 
 app.yaml tasks.yaml longtasks.yaml --log_level=debug
 INFO     2018-07-29 08:11:15,566 devappserver2.py:178] Skipping SDK update 
 check.
 INFO     2018-07-29 08:11:17,726 api_server.py:274] Starting API server at: 
 http://localhost:59886
 INFO     2018-07-29 08:11:18,259 dispatcher.py:270] Starting module 
   "default" running at: http://localhost:8484
 INFO     2018-07-29 08:11:18,519 dispatcher.py:270] Starting module "tasks" 
 running at: http://localhost:8485
 INFO     2018-07-29 08:11:18,815 dispatcher.py:270] Starting module 
"longtasks" running at: http://localhost:8486
INFO     2018-07-29 08:11:18,822 admin_server.py:152] Starting admin server 
at: http://localhost:8000

Также стоит отметить, что я могу запускать другие проекты GAE в Pycharm, и они работают (что заставляет меня думать, что это как-то связано с моей конфигурацией этого проекта).

1 ответ

Это ошибка в 2018.2.4 PyCharm Pro. У меня была та же проблема, и откатился до 2018.1.5 и он работал нормально.

Проблема заключается в том, что 2018.2.4 загружает классы гибкой среды приложения cloud-sdk вместо стандартных классов среды.

Хакерский способ преодолеть это - открыть <path-to...>/googlecloudsdk/core/util/times.py в текстовом редакторе и закомментировать

from dateutil.tz import _common as tz_common

а также

tz_common.PY3 = True  # MONKEYPATCH!!! Fixes a Python 2 standard module bug.

Предполагая, что вам не нужен этот "обезьяний", это решает проблему.

Я установил версию 211.0.0 - https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-211.0.0-darwin-x86_64.tar.gz

С последующим:

gcloud components install app-engine-python

Комментарии @user2061291 это правда. Pycharm пытается запустить google-cloud-sdk/bin/dev_appserver.py. Если вы все равно хотите запустить движок приложения из pycharm, потому что вы хотите отлаживать свой код или что-то еще, вам следует создать новый бегун python следующим образом:

Путь к сценарию:

/ {ВАШ КОРНЕВОЙ ПУТЬ GOOGLE-CLOUD-SDK}/google-cloud-sdk/platform/google_appengine/dev_appserver.py

Например:

Другие вопросы по тегам