Пакетный файл setup.py не установлен - PullRequest
0 голосов
/ 15 января 2020

У меня есть файл, который правильно отображается внутри исходного дистрибутива и колеса, но он не отображается в пакетах сайтов при установке.

Структура моего проекта выглядит следующим образом:

|-- README.md
|-- config
|   `-- log.ini
|-- oauc
|   |-- __init__.py
|   |-- odoo_driver.py
|   `-- page.py
|-- requirements.txt
`-- setup.py

Файл, о котором идет речь, config/log.ini.

Моя установка выглядит следующим образом:

import setuptools

setuptools.setup(
    name='oauc',
    version='0.0.1',
    packages=setuptools.find_packages(),
    data_files=[('oauc', ['config/log.ini'])],
    include_package_data=True
)

И вот результат oauc-0.0.1.tar.gz:

|-- PKG-INFO
|-- README.md
|-- config
|   `-- log.ini
|-- oauc
|   |-- __init__.py
|   |-- odoo_driver.py
|   `-- page.py
|-- oauc.egg-info
|   |-- PKG-INFO
|   |-- SOURCES.txt
|   |-- dependency_links.txt
|   |-- requires.txt
|   `-- top_level.txt
|-- setup.cfg
`-- setup.py

Это выглядит хорошо.

Однако, когда я устанавливаю с pip install src/dist/oauc-0.0.1.tar.gz (sr c является символической ссылкой на каталог проекта), результирующая установка venv/lib/python3.7/site-packages/oauc не включает файл:

|-- __init__.py
|-- __pycache__
|   |-- __init__.cpython-37.pyc
|   |-- odoo_driver.cpython-37.pyc
|   `-- page.cpython-37.pyc
|-- odoo_driver.py
`-- page.py

И я думаю, что это должно быть там. В моем файле инициализации:

import logging.config
import pkg_resources

logging.config.fileConfig(pkg_resources.resource_filename(__name__, 'config/log.ini'))

Вызов pkg_resources.resource_filename(__name__, 'config/log.ini') возвращает venv/lib/python3.7/site-packages/oauc/config/log.ini.

Как сделать файл log.ini, связанный с пакетом, доступным во время выполнения и как мне это сделать найти его местоположение?

1 Ответ

0 голосов
/ 15 января 2020

Я переместил файл внутри пакета, использовал package_data, а не data_files, добавил файл Manifest.in. Я думаю, data_files приземлится где-то еще. В любом случае, размещение файлов конфигурации в моем пакете не слишком странно. Итоговый результат:

Структура:

|-- MANIFEST.in
|-- README.md
|-- oauc
|   |-- __init__.py
|   |-- config
|   |   |-- __init__.py
|   |   `-- log.ini
|   |-- odoo_driver.py
|   `-- page.py
|-- requirements.txt
`-- setup.py

MANIFEST.in:

include oauc/config/log.ini

setup.py:

import setuptools

setuptools.setup(
    name='oauc',
    version='0.0.1',
    packages=setuptools.find_packages(),
    package_data={'config': ['log.ini']},
    include_package_data=True
)

I предположим, что вы не должны запрашивать файлы, указанные в атрибуте data_files, с помощью pkg_resources, если они не находятся внутри пакета, и это была моя основная ошибка.

...