使用setuptools将模块安装到站点软件包

时间:2019-06-11 22:26:07

标签: python pip setuptools

我正在尝试将CLI上载到PIP,一旦安装,它将在用户键入myscript

时运行

我的文件夹结构是这样的:

lib
  myscript
    __init__.py (empty)
    __main__.py (code that needs to run)
    utilities.py (needs to be imported from main)

scripts
  myscript

setup.py

我的setup.py应该安装lib.myscript软件包并将myscript作为命令行模块安装

setup.py

import setuptools
setuptools.setup(
    name='myscript',
    version='1.0',
    scripts=['./scripts/myscript'],
    packages=['lib.myscript'],
    install_requires=['setuptools', 'pandas >= 0.22.0', 'numpy >= 1.16.0'],
    python_requires='>=3.5'
)

scripts/myscript

#!/usr/bin/env bash

if [[ ! $@ ]]; then
    python -m myscript -h
else
    python -m myscript $@
fi

一旦我执行python setup.py installmyscript将作为命令行模块安装并运行。但是,它抛出一个错误,指出没有名为myscript的模块。

1 个答案:

答案 0 :(得分:0)

您尚未安装myscript,已经安装lib.myscript,请尝试执行以下操作:python -m lib.myscript。为了让Python将lib识别为包,请创建一个空文件lib/__init__.py

PS。这段代码:

#!/usr/bin/env bash

if [[ ! $@ ]]; then
    python -m myscript -h
else
    python -m myscript $@
fi

可以简化为:

#!/usr/bin/env bash
exec python -m myscript ${@:--h}

在外壳程序中表示“如果不为空,则使用$@,否则为-h