我正在尝试自动安装和启用Jupyter Extension,以使用户不需要键入命令:
jupyter nbextension install --user <my_fancy_module>
jupyter nbextension enable <the entry point> --user
如Jupyter Notebook documentation中所述,可以在setup.py
中指定:
import setuptools
setuptools.setup(
name="MyFancyModule",
...
include_package_data=True,
data_files=[
# like `jupyter nbextension install --sys-prefix`
("share/jupyter/nbextensions/my_fancy_module", [
"my_fancy_module/static/index.js",
]),
# like `jupyter nbextension enable --sys-prefix`
("etc/jupyter/nbconfig/notebook.d", [
"jupyter-config/nbconfig/notebook.d/my_fancy_module.json"
])
],
...
zip_safe=False
)
但是,当我尝试在软件包目录中运行pip install .
时,安装完成,但是未安装my_fancy_module
。正在运行:
jupyter nbextension install --user <my_fancy_module>
运作良好,因为它可以正确地从<my_fancy_module>
内的包目录中复制整个~/Library/Jupyter/nbextensions/
。
根据Python documentation on Installing Additional Files:
data_files
指定(目录,文件)(...)的序列。序列中的每个(目录,文件)对都指定安装目录和要在此处安装的文件。 (...)目录应该是相对路径。相对于安装前缀(对于系统安装,是Python的sys.prefix
;对于用户安装,是site.USER_BASE
)。
我的site.USER_BASE
指向~/.local
。
我的问题是:
如何从my_fancy_package
内部安装和启用setup.py
,使最终结果与执行开头提到的两个命令的结果相同?如果这是关于指定data_files
的-我应该指定什么directory
才能成功安装并启用my_fancy_module
?
我尝试过:
"/Library/Jupyter/nbextensions/my_fancy_module"
,"../Library/Jupyter/nbextensions/my_fancy_module"
,"share/jupyter/nbextensions/my_fancy_module"
但没有一个起作用。
答案 0 :(得分:0)
似乎data_files
很难接受绝对路径作为目的地,但是如果您使用setup.py
标志运行--no-binary
,即pip install <my_package> --no-binary :all":
运行正常。
from os import path
setuptools.setup(
...
data_files=[((path.expanduser('~') + '/Library/Jupyter/nbextensions/my_fancy_module',
['my_fancy_module/static/index.js']))]
...
)