我刚刚也有同样的问题。一个尚未解决的小问题。我找到了一个能够使用 PyPi 分发样式的解决方案(在我的情况下是 goosempl,也在 GitHub 上)。
我创建了一个 Python 模块,mplstyle-files 是其中的一部分:
|-- setup.py
|-- package_name
| |-- __init__.py
| |-- styles
| | |-- example.mplstyle
现在的想法是:
-
.mplstyle 文件与模块打包在一起。
- 模块已安装。
- 安装结束时会运行一个小脚本,从新安装的包中提取
.mplstyle 文件并将它们写入 matplotlib 配置目录。
这里是要点
setup.py
>
import atexit
from setuptools import setup
from setuptools.command.install import install
def _post_install():
import goosempl
package_name.copy_style()
class new_install(install):
def __init__(self, *args, **kwargs):
super(new_install, self).__init__(*args, **kwargs)
atexit.register(_post_install)
__version__ = '0.1.0'
setup(
name = 'package_name',
version = __version__,
...
install_requires = ['matplotlib>=2.0.0'],
packages = ['package_name'],
cmdclass = {'install': new_install},
package_data = {'package_name/styles':[
'package_name/styles/example.mplstyle',
]},
)
初始化.py
>
def copy_style():
import os
import matplotlib
from pkg_resources import resource_string
files = [
'styles/example.mplstyle',
]
for fname in files:
path = os.path.join(matplotlib.get_configdir(),fname)
text = resource_string(__name__,fname).decode()
open(path,'w').write(text)
为了将来参考,请参阅这些相关问题/文档: