python - 如何在 Python 中创建可以使用 PIP 安装的 CLI?
问题描述
正如标题所暗示的,我正在尝试使 python 脚本可以从命令行访问。我发现了像click和argv这样的库,它们可以很容易地访问从命令行传递的参数,但是用户仍然必须通过 Python 运行脚本。
代替
python /location/to/myscript.py
我希望能够做到
myscript
从任何目录
据我了解,我可以通过编辑我的 PATH 变量在我的计算机上实现这一点。但是,我希望能够简单地做:
pip install myscript
然后通过myscript
在任何地方键入来访问脚本。是否有一些特殊的代码我会放在setup.py
?
解决方案
你可以这样做setuptools
一个不错的例子setup.py
(比如你的包需要 pandas 和 numpy):
import setuptools
setuptools.setup(
name='myscript',
version='1.0',
scripts=['./scripts/myscript'],
author='Me',
description='This runs my script which is great.',
packages=['lib.myscript'],
install_requires=[
'setuptools',
'pandas >= 0.22.0',
'numpy >= 1.16.0'
],
python_requires='>=3.5'
)
您的目录应设置如下:
[dkennetz package]$ ls
lib scripts setup.py
里面的 lib 将是:
[dkennetz package]$ ls lib
myscript
里面myscript
将是:
[dkennetz package]$ ls lib/myscript
__main__.py
__init__.py
helper_module1.py
helper_module2.py
main 将用于调用您的函数并执行您想做的任何事情。
内部脚本将是:
[dkennetz package]$ ls scripts
myscript
的内容myscript
是:
#!/usr/bin/env bash
if [[ ! $@ ]]; then
python3 -m myscript -h
else
python3 -m myscript $@
fi
然后运行你:python setup.py install
这将安装您的程序和您install_requires=[]
在 setup.py 中包含的所有依赖项,并myscript
作为命令行模块安装:
[dkennetz ~]$ myscript
推荐阅读
- python - 在admin页面django中定义一个可以修改的全局变量,以及关于字段的问题
- angularjs - 你如何在 Jasmine 测试中模拟 angularJS 控制器 $scope 变量?
- wordpress - 从多个目录访问多语言 WordPress 博客
- python - 我正在尝试用 Python 制作闹钟(来自教程),Playsound 没有激活声音
- string - Powershell - 选择文件名的特定部分
- java - 使用比较器对字符串数组进行排序(特定排序情况)
- ios - AVCaptureDevice 的 exposurePointOfInterest 不起作用
- r - 如何从 R 中的“A”矩阵中获取元素
- class - 为 Segment 分配足够的内存以存储多达二十 (20) 个块
- java - 为什么List的对象
> 行为不端?