как упаковать сценарий оболочки в пакет pip - PullRequest
0 голосов
/ 11 июня 2018

У меня есть общий сценарий оболочки, используемый во всех модулях.

Все модули устанавливают общий пункт под названием common.Этот скрипт выглядит примерно так:

common
   utils
     scripts
       build
         generic_build.sh

Я видел, что есть способ установить скрипт Python, добавив к setup.py, используя аргументы scripts или console_scripts.но sh файлы, похоже, игнорируются.это означает, что они не попадают в установленный пакет.

есть идеи?

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Сценарии оболочки можно связать в дистрибутив, добавив их в список scripts, как если бы они были сценариями Python.Пример:

# bash_scripts/spam.sh
#!/usr/bin/env bash
echo Running "$0"

Простой сценарий установки для упаковки spam.sh:

# setup.py
from setuptools import setup

setup(
    name='spam',
    scripts=['bash_scripts/spam.sh']
)

Построение как исходного, так и двоичного дисков включает в себя spam.sh:

$ python setup.py bdist_wheel | grep spam.sh
copying bash_scripts/spam.sh -> build/scripts-3.6
copying build/scripts-3.6/spam.sh -> build/bdist.linux-aarch64/wheel/spam-0.0.0.data/scripts
changing mode of build/bdist.linux-aarch64/wheel/spam-0.0.0.data/scripts/spam.sh to 755
adding 'spam-0.0.0.data/scripts/spam.sh'

$ python setup.py sdist | grep spam.sh
copying bash_scripts/spam.sh -> spam-0.0.0/bash_scripts

После установки проверьте, включен ли сценарий оболочки:

$ pip install dist/spam-0.0.0.tar.gz
...
$ pip show -f spam
Name: spam
Version: 0.0.0
Summary: UNKNOWN
Home-page: UNKNOWN
Author: UNKNOWN
Author-email: UNKNOWN
License: UNKNOWN
Location: /data/gentoo64/home/u0_a82/.local/lib64/python3.6/site-packages
Requires:
Files:
  <b>../../../bin/spam.sh</b>
  spam-0.0.0.dist-info/DESCRIPTION.rst
  spam-0.0.0.dist-info/INSTALLER
  spam-0.0.0.dist-info/METADATA
  spam-0.0.0.dist-info/RECORD
  spam-0.0.0.dist-info/WHEEL
  spam-0.0.0.dist-info/metadata.json
  spam-0.0.0.dist-info/top_level.txt
0 голосов
/ 11 июня 2018

Зависит от того, как вы настроили свой файл setup.py.Попробуйте добавить его как ресурс или другой тип зависимости

 data_files=[('.',['INFO.txt']),
            ('additionalstuff',['additionalstuff/moredata.txt'])]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...