Распространить исполняемый файл с Python PIP - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь распространить инструмент 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 с использованием подпроцесса.

Что я делаю не так?

1 Ответ

0 голосов
/ 02 июля 2018

Не питонное решение, но для тех, кто борется с такой же проблемой, npm разрешает параметр bin в файле package.json, где вы можете напрямую связать свой исполняемый файл.

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