Ответ 1
По умолчанию при установке пакета от имени root относительные имена каталогов в списке data_files
разрешаются либо по значению sys.prefix
(для библиотек на чистом python), либо sys.exec_prefix
(для библиотек с скомпилированным расширением), поэтому вы можете извлекать свои файлы на основе этого. Qouting из документации distutils
:
Если каталог является относительным путем, он интерпретируется относительно префикса установки (Pythons
sys.prefix
для пакетов на чистом Python,sys.exec_prefix
для пакетов, содержащих модули расширения).
Так что для вашего примера вы найдете ваши файлы в os.path.join(sys.prefix, 'MyApp', 'CBV')
.
Однако было бы лучше использовать расширение setuptools
для distutils
и использовать модуль ресурсов pkg_resources
API для загрузки файлов данных. Он поставляется с setuptools
для этой цели. Вы хотите, чтобы ваши файлы данных, включенные в пакет, работали лучше всего. Это означает, что вы не будете использовать data_files
, а вместо этого либо перечисляете шаблоны файлов в файле MANIFEST.in и устанавливаете include_package_data=True
, либо перечисляете шаблоны файлов в package_data
, см. Включение файлов данных в документации по setuptools.
Затем вы можете загрузить такие файлы ресурсов прямо из пакета в строку с resource_string()
, например:
from pkg_resources import resource_string
foo_config = resource_string(__name__, 'foo.conf')