沿clyngor安装clago二进制程序
clyngor-with-clingo的Python项目详细描述
CLYNGOR和CLINGO
这是一个python包,沿着clyngor package安装一个clago二进制文件, 所以最终用户不必关心cligo的安装
cligo二进制文件在the official release page
安装
当有人(不理解“在您的路径中安装clyngor binary”)必须安装clyngor时,请给他们换行:
pip install clyngor-with-clingo
clingo可执行文件将出现在它们的bin
中。如果所述人员在系统级工作,则可能需要根访问权限。
维护
必须更新包才能使用新的cligo二进制文件。
- 脚本
retrieve-clingo.sh <clingo version>
将自动检索给定的clago版本。 - 脚本
put-clingo-version.sh <clingo version>
将自动将给定的clago版本推送到包中。
使用zest.releaser上载新版本;注意将clago版本与包版本匹配。
如何执行此魔术
目前的解决方案是:将cligo伪装成python脚本
Link to the way of doing that。谢谢!
我最终会reproducing the same entry point implementation, using pkg_resource,它起作用: 二进制文件是使用MANIFEST.in嵌入到包中的,并且包只是真正的操作 将命令行参数委托给正确的clago二进制文件。
这似乎有效,但是:
- 用户无法控制已安装的二进制文件(但该软件包完全是为了让用户不必处理该问题,但仍然…有经验的用户永远不应该使用它)
- 这3个二进制文件将发送给用户,并在执行时进行选择。
动态解决方案:破解安装工具,以便在安装时下载二进制文件
由pyasp使用的方法
有很多缺点,比如从客户端下载二进制文件,需要使用--no-cache-dir
pip标志来强制pip执行黑客攻击
正确但不起作用的解决方案:在python包中嵌入特定于平台的二进制文件
包中的python部分非常简单(这个包中可能有nopython), 是we still need a basic architecture。
平台特定魔术
Setuptools提供自PEP 508环境标记以来, 理论上usable in setup.cfg 使用setuptools:
[options.data_files]
bin/clingo =
bin/linux/clingo; platform_system=="Linux"
bin/macos/clingo; platform_system=="Darwin"
bin/win/clingo.exe; platform_system=="Windows"
但它不起作用。A question has been asked about it,还有on SO。
可能是因为数据文件不支持环境标记。因此,这一解决办法被放弃了。