モジュール ディレクトリのサブディレクトリにいくつかのリソースを使用する Python モジュールがあります。スタックオーバーフローを検索して関連する回答を見つけた後、次のようなものを使用してモジュールをリソースに誘導することができました
import os
os.path.join(os.path.dirname(__file__), 'fonts/myfont.ttf')
これは、別の場所からモジュールを呼び出すと正常に機能しますが、現在の作業ディレクトリを変更した後にモジュールを呼び出すと機能しなくなります。問題は、の内容が__file__
相対パスであることです。これは、ディレクトリを変更したという事実を考慮していません。
>>> mymodule.__file__
'mymodule/__init__.pyc'
>>> os.chdir('..')
>>> mymodule.__file__
'mymodule/__init__.pyc'
で絶対パスをエンコードする方法__file__
、またはそれを禁止する方法、現在の作業ディレクトリが何であれ、モジュール内のリソースにアクセスするにはどうすればよいですか? ありがとう!