В настоящее время лучший способ связать данные с кодом - это setuptools и использование pkg_resources
:
from pkg_resources import resource_filename, resource_stream
stream = resource_stream("PACKAGE", "path/to/data_f.ile")
Преимущество также в работе с яйцами Python. У него (IMHO) есть недостаток, заключающийся в том, что вам нужно поместить файлы данных в каталог кода, что является общепринятой практикой (одна из очень, очень немногих, с которыми я не согласен).
Что касается дистрибутивов Linux, я могу (разумно) заверить вас, что ваша программа будет работать без проблем (и исправлений) в любой современной системе, основанной на Debian, если вы используете pkg_resources
. Я не знаю о Fedora / openSUSE, но я бы предположил, что он работает также.
Он работает в Windows, но в настоящее время не работает с py2exe - однако для этого есть простые обходные пути.