我正在尝试将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 install
,myscript
将作为命令行模块安装并运行。但是,它抛出一个错误,指出没有名为myscript
的模块。
答案 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
”