首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用python pip分发可执行文件

使用python pip分发可执行文件
EN

Stack Overflow用户
提问于 2018-07-03 00:10:02
回答 1查看 162关注 0票数 0

我正在尝试分发一个供公众使用的CLI工具。我的代码包含一个可执行文件(用golang编写)和一个helper python脚本(由可执行文件使用)。

我最初的方法是使用以下命令从python调用可执行文件,其中main是cli命令的入口点。

代码语言:javascript
复制
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

`

我的包裹是这样的

代码语言:javascript
复制
project   

│   setup.py    
│   
└───myclitool
│   │   golangexec
│   │   __init__.py
|   |   pyhelper.py
|   |   run.py

其中setup.py为:

代码语言:javascript
复制
from setuptools import setup


setup(

name='mypkg',
packages=['myclitool'],
version='0.1',
entry_points='''
    [console_scripts]
    mycli=myclitool.run:main
'''
)

但是,这不会将我的可执行文件安装在与其余文件相同的位置。

我尝试将所有内容都放在包数据中,但在使用子进程运行exe时遇到权限被拒绝错误。

我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2018-07-03 04:44:09

这不是一个pythonic式的解决方案,但是对于任何有同样问题的人来说,npm允许在package.json文件中使用bin参数,您可以在其中直接链接您的可执行文件。

代码语言:javascript
复制
{
  "name": "myclipkg",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "author": "",
  "license": "ISC",
  "bin": {
    "myclitool": "./golangexec"
   },
  "homepage": "https://gitlab.com/myclipkg/cli#README"
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51140063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档