Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
访问python源代码分发包中包含的资源_Python_Python 3.x - Fatal编程技术网

访问python源代码分发包中包含的资源

访问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

我正在尝试创建一个python包,并添加了一些模块运行所需的文件,如下所示:

由于环境的原因,如果可能的话,这是我需要使用的方法。我还需要一个可分发的源代码,所以当制作其他类型的python可分发文件时,一些有用的东西对我来说不起作用

我的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
目录结构如下所示:

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您能确认它是否回答了您的问题(或否)。亲切的问候。