我有一个在所有模块中使用的通用 shell 脚本。
所有模块都安装一个名为
common
的通用 pip。
剧本是这样的
common
utils
scripts
build
generic_build.sh
我看到有一种方法可以通过使用
setup.py
或 scripts
参数添加到 console_scripts
来安装 python 脚本。但 sh
文件似乎被忽略。这意味着它们最终不会出现在已安装的包中。
有什么想法吗?
Shell 脚本可以通过将它们添加到
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
安装后,检查是否包含shell脚本:
$ 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:
../../../bin/spam.sh
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
这取决于您如何配置 setup.py 文件。 尝试将其添加为资源或其他类型的依赖项
data_files=[('.',['INFO.txt']),
('additionalstuff',['additionalstuff/moredata.txt'])]
这是一个示例:https://github.com/kamangir/blue-options
pip install blue_options
然后将此行添加到您的 ~/.bash_profile 或 ~/.bashrc 中,
source $(python -m blue_options locate)/.bash/blue_options.sh
并使用它,
function func() {
local options=$1
local var=$(abcli_options "$options" var default)
local key=$(abcli_options_int "$options" key 0)
[[ "$key" == 1 ]] &&
echo "var=$var"
}