При запуске приложения через IDE вы не можете полагаться на текущий каталог (в отличие от запуска, например, с помощью файла .bat).
Если вам нужны файлы ресурсов, расположенные относительнок основному сценарию вы не можете использовать относительные пути.
Вы можете использовать __file__
, который предоставляет полный путь к текущему сценарию Python, поэтому
os.path.join(os.path.dirname(__file__),'pictures/icons/pic.png')
- это абсолютный путьфайл ресурсов, независимо от текущего каталога (на который вы не можете и не должны полагаться)
Если по какой-то причине вы не можете изменить все относительные пути, вы можете изменить текущий каталог на каталог скриптов по адресузапускать. Не лучшее решение, но оно, вероятно, сработает в этом случае:
os.chdir(os.path.abspath(os.path.dirname(__file__)))
(добавлено abspath
, как будто __file__
возвращает имя файла, dirname
возвращает пустую строку и chdir
не удается)