У меня есть приложение Python. Он загружает конфигурационные файлы (а также различные другие файлы) от делать вещи, такие как:py2exe и файловая система
_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
CONFIG_DIR = os.path.join(_path, 'conf')
Это прекрасно работает. Тем не менее, когда я упаковать приложение с py2exe, плохие вещи случаются:
File "proj\config.pyc", line 8, in <module>
WindowsError: [Error 3] The system cannot find the path specified: 'C:\\proj\
\dist\\library.zip\\conf'
Очевидно, что это неверный путь ... Что более надежный способ сделать это? Я не хочу указать абсолютные пути в программе, потому что он может быть помещен в разные папки . Должен ли я просто сказать «если он говорит, что имя папки« library.zip », а затем перейдите на еще один уровень вниз в папку« dist »?
Обратите внимание, что у меня есть довольно вложенные иерархии каталогов ... для меня, например, модуль, gui.utils.images, хранящиеся в «GUI/утилитами/images.py», и он использует свой путь для доступа " gui/images/ok.png ", например. Прямо сейчас версия py2exe попытается получить доступ к «proj/dist/library.zip/gui/images/ok.png» или что-то еще, , которое просто не сработает.
Хм, я дам этот снимок. im записывая функцию getAbsPath(), которая принимает относительный путь и просто возвращает правильную вещь для открытия. он обнаружит, находится ли он в файле library.zip, и если это так, он перейдет в другой каталог вместо этого, на фактическом fs – Claudiu
. Вы также можете попытаться поместить ваши включенные файлы в каталог пакетов, так как '__init__ .py' '__path__' сохранит путь к скрипту' __init __. py'. – fucx