访问python源代码分发包中包含的资源
我正在尝试创建一个python包,并添加了一些模块运行所需的文件,如下所示: 由于环境的原因,如果可能的话,这是我需要使用的方法。我还需要一个可分发的源代码,所以当制作其他类型的python可分发文件时,一些有用的东西对我来说不起作用 我的setup.py如下所示:访问python源代码分发包中包含的资源,python,python-3.x,Python,Python 3.x,我正在尝试创建一个python包,并添加了一些模块运行所需的文件,如下所示: 由于环境的原因,如果可能的话,这是我需要使用的方法。我还需要一个可分发的源代码,所以当制作其他类型的python可分发文件时,一些有用的东西对我来说不起作用 我的setup.py如下所示: from setuptools import setup setup(name='mypackage', version='0.1', py_modules=['mypackage'], inst
from setuptools import setup
setup(name='mypackage',
version='0.1',
py_modules=['mypackage'],
install_requires=['numpy'],
data_files=[('data', ['data/file0.npz', 'data/file1.npz'])]
)
├── PKG-INFO
├── data
│ ├── data0.npz
│ └── data1.npz
├── dist
│ ├── mypackage-0.1.zip
├── mypackage.egg-info
│ ├── PKG-INFO
│ ├── SOURCES.txt
│ ├── dependency_links.txt
│ ├── requires.txt
│ └── top_level.txt
├── mypackage.py
├── setup.cfg
└── setup.py
目录结构如下所示:
from setuptools import setup
setup(name='mypackage',
version='0.1',
py_modules=['mypackage'],
install_requires=['numpy'],
data_files=[('data', ['data/file0.npz', 'data/file1.npz'])]
)
├── PKG-INFO
├── data
│ ├── data0.npz
│ └── data1.npz
├── dist
│ ├── mypackage-0.1.zip
├── mypackage.egg-info
│ ├── PKG-INFO
│ ├── SOURCES.txt
│ ├── dependency_links.txt
│ ├── requires.txt
│ └── top_level.txt
├── mypackage.py
├── setup.cfg
└── setup.py
我试着这样加载它(为了简单起见,init删除了所有函数):
并在尝试实例化该类时出现以下错误:
No such file or directory: 'data/file0.npz'
我需要更改什么才能使其正常工作?要加载包资源,我通常使用 以下是获取相对于当前模块的资源文件的示例:
从pkg\u资源导入资源\u文件名
def main():
打印(资源\文件名(\名称\数据/test.txt'))
在setup.py
中,您可以使用包含包数据文件
设置(
名称=“”,
# (...)
数据包={
'': [
“*.txt”,
],
},
)
注意:要使其正常工作,
data
必须是python模块 我想你误解了。我试图从属于所述包的类中加载存储在包中的数据。你不是在描述我应该如何从包外部加载包中的数据吗?不,不,我的代码是从同一个包中加载数据。仔细阅读resource\u filename
的文档。第一个参数是应该加载资源中的包/模块。这里我使用的是\uu name\uuuu
,它相当于从当前包/module.Btw加载文件名,在setup.py中(对于打包部分),您还可以使用包含包数据
选项自动包含包中的数据。@hellomatey27您能确认它是否回答了您的问题(或否)。亲切的问候。