【发布时间】:2020-01-15 21:21:15
【问题描述】:
我有一个文件正确显示在源代码分发和轮子中,但安装时它没有出现在站点包中。
我的项目结构如下:
|-- 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 安装时(src 是项目目录的符号链接),生成的安装 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 文件在运行时可访问,以及如何找到他的位置?
【问题讨论】:
-
哦,如果你有机会知道学习 setup.py 的好资源,做什么和怎么做,我会接受的。因为官方文档对学习并不友好。
标签: python package setup.py pkg-resources