Запуск кода Python через терминал. Ошибка No such file or directory
Запускаю консольный файловый менеджер, терминал выдает ошибку - не найден нужный файл.
Проверяю через ранер Pycharm'a через os.getcwd(), показывает нужную директорию, ту, в которой находится файл с кодом.
При запуске терминала он указывает совсем другой путь. В чем проблема?
Ответы (2 шт):
Вообще-то каталоги запуска и терминала, и "ранера" в PyCharm настраиваются, но чтобы минимизировать проблемы, можете искать файл относительно файла с текстом программы, т.е. для данных в том же каталоге можно использовать pathlib.Path(__file__).parent / 'my_data_file.txt'. Тем более, при вызове "без PyCharm" (из командной строки) текущий каталог тоже може быть где угодно.
Могут быть тонкости при упаковке программы в один исполняемый файл (не проверял).
Ну а еще разумнее файл данных передать в параметрах командной строки.
Запуск запуск в командной строке и через PyCharm это два разных процесса (непохожих снаружи, внутри-то там одно и то же).
В первом случае запускается исполняемый интерпретатор python, который находится где-то в служебных папках, который ищет переданый ему аргументом файл. В вашем случае передано main.py. Путь относительный и очевидно, что в папке с интерпретатором такого файла нет. Потому и выдается ошибка.
В запуске через PyCharm тоже запускается инерпретатор (системый или пичарный, сейчас неважно) и ему неявно передается путь до запускаемого скрипта.
Т.е. в первом случае вы запускаете
/какаято/папка/на/системном/диске/python main.py
а во втором случае
/какаято/папка/на/системном/диске/python /полный/путь/до/файла/main.py
Поэтому при запуске через консоль нужно или предварительно перейти в папку с файлом, или указываеть полный путь до файла.
А os.getcwd() вам покажет ту папку, в которой находится скрипт. Но выполняется-то у вас не скрипт, а интерпретатор и рабочая директория у него совсем другая. Запустите файл где написано
import os
os.getcwd()
и эти же две строчки просто в интерпретаторе питона. Результаты будут разные.