How do I use a relative path in a Python module when the CWD has changed? -
i have python module uses resources in subdirectory of module directory. after searching around on stack overflow , finding related answers, managed direct module resources using
import os os.path.join(os.path.dirname(__file__), 'fonts/myfont.ttf') this works fine when call module elsewhere, breaks when call module after changing current working directory. problem contents of __file__ relative path, doesn't take account fact changed directory:
>>> mymodule.__file__ 'mymodule/__init__.pyc' >>> os.chdir('..') >>> mymodule.__file__ 'mymodule/__init__.pyc' how can encode absolute path in __file__, or barring that, how can access resources in module no matter current working directory is? thanks!
store absolute path module directory @ beginning of module:
package_directory = os.path.dirname(os.path.abspath(__file__)) afterwards, load resources based on package_directory:
font_file = os.path.join(package_directory, 'fonts', 'myfont.ttf') and after all, not modify of process-wide resources current working directory. there never real need change working directory in well-written program, consequently avoid os.chdir().
Comments
Post a Comment