【发布时间】:2018-07-02 16:10:02
【问题描述】:
我正在尝试分发 CLI 工具以供公众使用。我的代码包含一个可执行文件(用 golang 编写)和一个辅助 python 脚本(由可执行文件使用)。
我最初的方法是使用它从 python 调用可执行文件,其中 main 是 cli 命令的入口点。
import os
import subprocess
import sys
def main():
dst = os.path.dirname(os.path.realpath(__file__))+'/golangexec'
arg_list = [dst,"myclitool"]
cmd_args = sys.argv[1:]
args = arg_list + cmd_args
subprocess.call(args)
return
`
我的包裹是这个
project
│ setup.py
│
└───myclitool
│ │ golangexec
│ │ __init__.py
| | pyhelper.py
| | run.py
setup.py 是:
from setuptools import setup
setup(
name='mypkg',
packages=['myclitool'],
version='0.1',
entry_points='''
[console_scripts]
mycli=myclitool.run:main
'''
)
但是,这不会将我的可执行文件与其余文件安装在同一位置。
我试图将所有内容都放在包数据中,但是在使用子进程运行 exe 时遇到权限被拒绝错误。
我做错了什么?
【问题讨论】:
-
通过
package_data捆绑可执行文件是正确的方法。我宁愿找出为什么会引发权限错误 - 安装时您是否错过了golangexec文件上的可执行位? -
嗯,
package_data是数据,不是可执行文件,对吧?对于可执行文件setuptools有scripts。
标签: python pip command-line-interface setuptools