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
Например: