Почему нельзя называть файл сценария Python ab c .py? - PullRequest
10 голосов
/ 25 мая 2020

Однажды, когда я возился с Python в PyCharm, я столкнулся с довольно глупой проблемой. А именно, когда я пытаюсь запустить простой скрипт в файле с именем abc.py, я получаю сообщение об ошибке. Я попытался запустить тот же файл прямо с терминала, и он выглядит нормально.

ab c .py

print("Hello world")

Вывод:

/Users/.../venv/bin/python /Users/.../abc.py
Fatal Python error: init_sys_streams: can't initialize sys standard streams
Traceback (most recent call last):
  File "/usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/lib/python3.7/io.py", line 52, in <module>
  File "/Users/.../abc.py", line 1, in <module>
RuntimeError: lost sys.stdout

Process finished with exit code 134 (interrupted by signal 6: SIGABRT)

Просто из любопытства, в чем тут дело?

РЕДАКТИРОВАТЬ: Почему это происходит только при запуске из PyCharm, а не из терминала?

Ответы [ 2 ]

4 голосов
/ 25 мая 2020

abc - стандартный модуль python. Здесь => https://docs.python.org/3/library/abc.html

Он должен работать, если вы переименуете свой собственный модуль ab c .py во что-то другое, например abcd.py

1 голос
/ 25 мая 2020

Вы получаете сообщение об ошибке, потому что python сбит с толку.

Видите ли, в python есть встроенный модуль, то есть также называется ab c (сокращение от 'Abstract Base Classes')!

Я предлагаю вам назвать свой файл как-нибудь иначе, или другим сумасшедшим способом,

удалить модуль (шучу, не делайте этого !).

...