如何从已安装的包中访问资产
How to access assets from installed package
我的目录结构如下所示:
videocloud
|
|---videocloud
| |
| |---main.py
| |---font.ttf
|
|---setup.py
我需要从 main.py
访问 font.ttf
。我可以通过 videocloud/videocloud/
运行 main.py
并通过引用它来访问 font.ttf
来做到这一点。但是,工作目录不会始终保持不变。在执行 python setup.py install
之后,软件包将安装到 site-packages
并且 font.ttf
将无法访问。
我尝试将其添加到我的设置脚本中:
import setuptools
setuptools.setup(
...
data_files=[("videocloud", ["NotoSans.ttf"])]
但是安装时报错:
error: can't copy 'NotoSans.ttf': doesn't exist or not a regular file
这似乎可行:
data_files=[("videocloud", ["videocloud/NotoSans.ttf"])]
但即便如此,当我尝试通过 pkg_resources.resource_filename(__name__, "NotoSans.ttf")
访问它时,它给了我 KeyError: 'videocloud\NotoSans.ttf
正如 Grzegorz Bokota 提到的那样。
在您的包中使用 MANIFEST.IN,您可以包含数据 files/config 文件,这些文件将在安装包后安装到 site-packages 中。
查看 manifest.in 上的文档
https://docs.python.org/2/distutils/sourcedist.html
我相信你应该能够导入 it/at 至少通过 site-packages 目录结构访问它以访问它(尽管第二次打开感觉很糟糕)
我的目录结构如下所示:
videocloud
|
|---videocloud
| |
| |---main.py
| |---font.ttf
|
|---setup.py
我需要从 main.py
访问 font.ttf
。我可以通过 videocloud/videocloud/
运行 main.py
并通过引用它来访问 font.ttf
来做到这一点。但是,工作目录不会始终保持不变。在执行 python setup.py install
之后,软件包将安装到 site-packages
并且 font.ttf
将无法访问。
我尝试将其添加到我的设置脚本中:
import setuptools
setuptools.setup(
...
data_files=[("videocloud", ["NotoSans.ttf"])]
但是安装时报错:
error: can't copy 'NotoSans.ttf': doesn't exist or not a regular file
这似乎可行:
data_files=[("videocloud", ["videocloud/NotoSans.ttf"])]
但即便如此,当我尝试通过 pkg_resources.resource_filename(__name__, "NotoSans.ttf")
访问它时,它给了我 KeyError: 'videocloud\NotoSans.ttf
正如 Grzegorz Bokota 提到的那样。 在您的包中使用 MANIFEST.IN,您可以包含数据 files/config 文件,这些文件将在安装包后安装到 site-packages 中。
查看 manifest.in 上的文档 https://docs.python.org/2/distutils/sourcedist.html
我相信你应该能够导入 it/at 至少通过 site-packages 目录结构访问它以访问它(尽管第二次打开感觉很糟糕)