繁体   English   中英

使用python pip分发可执行文件

[英]Distribute executable with python pip

我正在尝试分发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时遇到权限拒绝错误。

我究竟做错了什么?

不是pythonic解决方案,但是对于任何一个遇到相同问题的人,npm都可以在package.json文件中使用bin参数,您可以在其中直接链接可执行文件。

{
  "name": "myclipkg",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "author": "",
  "license": "ISC",
  "bin": {
    "myclitool": "./golangexec"
   },
  "homepage": "https://gitlab.com/myclipkg/cli#README"
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM