我提供了一个工具作为我的python包的一部分,使用散景可视化参数空间.启动它的正常方法是:
$bokeh serve --show my_package/tools/my_tool.py
这将打开浏览器并显示交互式图.
但是,当我使用pip / PyPI安装此软件包时,用户无法轻松访问此文件夹,因此我想在setup.py中为此提供一个入口点.
包装布局:
folder
|
|--- my_package
| |
| |- __init__.py
| |- __main__.py
| |- some_code.py
| |
| +--- tools
| |
| +--- my_tool.py
|
+--setup.py
在我的setup.py中,我已经指定了main方法的入口点:
setup.py
from setuptools import setup, find_packages
setup(
name = "my_package",
packages = find_packages(),
entry_points = {
'console_scripts': [
'my_package = my_package.__main__:main'
]
},
[...],
)
但是,我发现启动散景服务器并显示界面的唯一方法是创建另一个这样的python脚本
import os
from subprocess import call
def main():
p = os.path.realpath(__file__)
prefix, _ = os.path.split(p)
bokeh_server_file = os.path.join(prefix, "my_tool.py")
call(["bokeh", "serve", "--show", bokeh_server_file])
if __name__ == "__main__":
main()
将它放在tools文件夹中,并为此脚本main方法创建一个入口点. *颤抖*必须有一个更好的方法来做到这一点.
是否可以使用setuptools提供这种入口点,还是有另一种方法来实现这种行为?
解决方法:
如果我没有弄错,你可以使用Embedding Bokeh Server as a Library文档中介绍的嵌入式服务器路由.关于在文档的这一部分之后使用散景服务器客户端api,有一个跟进线.听起来他们正在研究将来连接到服务器的更多方法,以及他们讨论用例的部分.