Par*_*ram 6 python pip command-line-interface
正如标题所暗示的那样,我正在尝试从命令行访问 python 脚本。我发现像click和argv这样的库可以很容易地访问从命令行传递的参数,但用户仍然必须通过 Python 运行脚本。
代替
python /location/to/myscript.py
Run Code Online (Sandbox Code Playgroud)
我希望能够做到
myscript
Run Code Online (Sandbox Code Playgroud)
从任何目录
据我所知,我可以通过编辑我的 PATH 变量在我的计算机上实现这一点。但是,我希望能够简单地做到:
pip install myscript
Run Code Online (Sandbox Code Playgroud)
然后通过myscript从任何地方键入来访问脚本。是否有一些特殊的代码我会放在setup.py?
Tom*_*art 25
用于console_scripts挂钩特定的 Python 方法(不是整个可执行文件),setup.py文件:
from setuptools import setup\nsetup(\n ...\n entry_points = {\n \'console_scripts\': [\'mybinary=mymodule.command_line:cli\'],\n },\n name=\'mymodule\',\n ...\n)\nRun Code Online (Sandbox Code Playgroud)\n脚本command_line.py将是:
import mymodule\n\ndef cli():\n print("Hello world!")\nRun Code Online (Sandbox Code Playgroud)\n项目目录如下所示:
\nmyproject/\n mymodule/\n __init__.py\n command_line.py\n ...\n setup.py\nRun Code Online (Sandbox Code Playgroud)\n\n\nsetuptools 将生成一个独立的脚本 \xe2\x80\x98shim\xe2\x80\x99 ,该脚本导入您的模块并调用注册的函数。
\n
该垫片允许您直接调用mybinary并确保它被 python 正确调用。它提供特定于平台的垫片(即,在 Windows 上它生成一个 .exe)。
你可以这样做 setuptools
一个很好的例子setup.py(比如你的包需要熊猫和 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'
)
Run Code Online (Sandbox Code Playgroud)
您的目录应设置如下:
[dkennetz package]$ ls
lib scripts setup.py
Run Code Online (Sandbox Code Playgroud)
里面的 lib 将是:
[dkennetz package]$ ls lib
myscript
Run Code Online (Sandbox Code Playgroud)
里面myscript将是:
[dkennetz package]$ ls lib/myscript
__main__.py
__init__.py
helper_module1.py
helper_module2.py
Run Code Online (Sandbox Code Playgroud)
main 将用于调用您的函数并执行您想做的任何操作。
内部脚本将是:
[dkennetz package]$ ls scripts
myscript
Run Code Online (Sandbox Code Playgroud)
和内容myscript将是:
#!/usr/bin/env bash
if [[ ! $@ ]]; then
python3 -m myscript -h
else
python3 -m myscript $@
fi
Run Code Online (Sandbox Code Playgroud)
然后运行你做: python setup.py install
这将安装您的程序以及您包含在install_requires=[]setup.py 中的所有依赖项,并myscript作为命令行模块安装:
[dkennetz ~]$ myscript
Run Code Online (Sandbox Code Playgroud)
setuptools我知道这个问题比较旧,对于使用肯定使用Tombart 的答案的项目
也就是说,我一直在使用诗歌并且使用一个.toml文件,如果这就是你所使用的,因为这可能是其他人会搜索的内容,这里是你如何使用 toml 文件打包脚本(至少使用诗歌)
[tool.poetry.scripts]
myscript = "mybinary=mymodule.command_line:cli"
Run Code Online (Sandbox Code Playgroud)
不确定这是否适用于 flit 或任何其他包管理器,但它适用于诗歌
| 归档时间: |
|
| 查看次数: |
3519 次 |
| 最近记录: |