У меня есть пользовательская библиотека Python, которую я встроил в колесо следующим образом python setup.py sdist bdist_wheel
.
Файл setup.py
выглядит следующим образом.
from setuptools import setup, find_packages
with open('README.rst', 'r') as fh:
long_desc = fh.read()
setup(
name='my_lib',
version='0.0.1',
packages=find_packages(),
description='',
long_description=long_desc,
scripts=['do-something'],
data_files=[
('config', ['config/params1.cfg', 'config/params2.cfg']),
('fonts', ['fonts/arial_narrow_7.ttf'])
]
)
Эта команда генерируетфайл dist/my_lib-0.0.1-py3-none-any.whl
.Затем я определяю conda environment.yml
следующим образом.
name: test
channels:
- anaconda
dependencies:
- python=3.6
- pip:
- https://s3.amazonaws.com/mybucket/my_lib-0.0.1-py3-none-any.whl
Я создаю среду conda с помощью conda env create -f environment.yml
.Установка в порядке, но когда я пытаюсь выполнить do-something
, я получаю следующую ошибку ModuleNotFoundError: No module named 'demo'
.Сценарий do-something
выглядит следующим образом.
#! /usr/bin/env python
from demo.args import get_parser, start
if __name__ == "__main__":
opt = get_parser().parse_args()
print(opt)
start(opt)
Что странно, потому что, когда я активирую среду conda conda activate test
и копирую / вставляю from demo.args import get_parser, start
в REPL, он работает.
В ~/anaconda3/envs/test/lib/python3.6/site-packages
я вижу 2 каталога.
my_lib-0.0.1.dist-info
, который содержит INSTALLER
, METADATA
, RECORD
, top_level.txt
, WHEEL
demo
, который содержит __init__.py
и args.py
Любые идеи о том, что я здесь делаю неправильно?
Кроме того, мой код долженполучить доступ к data_files
(то есть fonts/arial_narrow_7.ttf
).Я заметил, что 2 каталога, config
и fonts
находятся в корне ~/anaconda3/envs/test
.Как мой код получит доступ к этим файлам сейчас?У меня есть строка в моем коде, подобная следующей:
ImageFont.truetype('fonts/arial_narrow_7.ttf')
И когда я запускаю код из корневого каталога проекта (не в среде тестирования conda за пределами каталога проекта), это работает, потому что font
каталог существует относительно того, где я выполняю код.Но скажем, если я переключусь в среду conda и выполню do-something
из /tmp
, я уверен, что файл .ttf
не будет найден.Любая стратегия упаковки шрифта, чтобы я мог прочитать его, независимо от того, где я выполняю точку входа моей программы?