Python 未安装setup.py包捆绑文件
我有一个文件,它正确地出现在源代码分发版和控制盘中,但安装时它不会出现在站点包中 我的项目结构如下所示:Python 未安装setup.py包捆绑文件,python,package,setup.py,pkg-resources,Python,Package,Setup.py,Pkg Resources,我有一个文件,它正确地出现在源代码分发版和控制盘中,但安装时它不会出现在站点包中 我的项目结构如下所示: |-- README.md |-- config | `-- log.ini |-- oauc | |-- __init__.py | |-- odoo_driver.py | `-- page.py |-- requirements.txt `-- setup.py import setuptools setuptools.setup( name='oauc',
|-- README.md
|-- config
| `-- log.ini
|-- oauc
| |-- __init__.py
| |-- odoo_driver.py
| `-- page.py
|-- requirements.txt
`-- setup.py
import setuptools
setuptools.setup(
name='oauc',
version='0.0.1',
packages=setuptools.find_packages(),
data_files=[('oauc', ['config/log.ini'])],
include_package_data=True
)
所讨论的文件是config/log.ini
我的设置如下所示:
|-- README.md
|-- config
| `-- log.ini
|-- oauc
| |-- __init__.py
| |-- odoo_driver.py
| `-- page.py
|-- requirements.txt
`-- setup.py
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是project dir的符号链接),生成的安装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\u resources.resource\u文件名(\uu name\uu,'config/log.ini')
返回venv/lib/python3.7/site packages/oauc/config/log.ini
如何在运行时访问与包捆绑在一起的log.ini
文件,以及如何找到他的位置?我将文件移到包内,使用包数据而不是数据文件,在文件中添加了清单。我想数据文件可能在别的地方。总之,在我的软件包中放入y配置文件并不奇怪。
因此,最终结果是:
结构:
|-- MANIFEST.in
|-- README.md
|-- oauc
| |-- __init__.py
| |-- config
| | |-- __init__.py
| | `-- log.ini
| |-- odoo_driver.py
| `-- page.py
|-- requirements.txt
`-- setup.py
清单1.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
)
我猜你不应该用pkg_资源查询属性数据_文件指定的文件,因为它们不在包中,这是我的主要错误。噢,如果你知道一个关于学习setup.py的好资源,做什么和如何做,我就用它。因为官方文档对学习并不友好。如果有人对教程感兴趣:还有一个示例项目