gpt4 book ai didi

python - 如何 pip 安装 Python 程序,使其具有命令行快捷方式

转载 作者:行者123 更新时间:2023-11-30 22:34:15 26 4
gpt4 key购买 nike

我正在尝试编写一个Python程序,我可以pip install以便它具有特定的命令行别名,类似于带有 awscli 的“aws”命令包(参见 https://pypi.python.org/pypi/awscli/1.11.115 )。

setup.py来自awscli似乎包含类似的内容

setuptools.setup(console='bin/aws')

这可能是命令行“别名”起作用的原因。然而,在http://setuptools.readthedocs.io/en/latest/setuptools.html我无法轻松找到有关如何使用此功能的文档或示例 console选项。

我的简化用例如下。我有一个目录sayhello其中包含以下内容:

.
├── sayhello.py
└── setup.py

哪里sayhello.py定义了函数 ( say_hello ) 和 if __name__ == "__main__"阻止调用此函数:

def say_hello():
print("Hello, world!")

if __name__ == "__main__":
say_hello()

setup.py我试过的是

from setuptools import setup, find_packages

setup(name="sayhello", version="1.0", packages=find_packages(), console="/bin/sayhello")

然后在 sayhello目录,我愿意

pip install .

(在 virtualenv venvsource venv/bin/activate 之后在虚拟环境中执行此操作)。之后,我能够import sayhellosayhello.say_hello()例如,在 Python shell 中,但键盘快捷键 sayhello我试图定义的方法不起作用。

如何修改 setup.py这样命令 sayhello触发if __name__ == "__main__"阻止sayhello.py

最佳答案

假设您的包的根目录中有一个 sayhello.py。然后只需添加 scripts在您的 setup.py 中:

setup(
...
scripts=['sayhello.py']
)

习惯上将所有脚本放在 scripts/ 目录中,使它们可执行,并在第一个目录中放置一个 hashbang (#!/usr/bin/env python)线。

第二种方法是通过console_scripts :

setup(
...
entry_points = {
'console_scripts': ['sayhello=sayhello:say_hello'],
}
...
)

一个最小的例子

sayhello.py 中放置:

#!/usr/bin/env python
print "Hello!"

setup.py中:

from setuptools import setup
setup(
name="sayhello",
version="0.0.1",
scripts=['sayhello.py']
)

运行 pip install . 后,您应该将 sayhello.py 脚本复制到虚拟环境的 bin 目录(位于您的 路径)。

测试脚本:

$ sayhello.py
Hello!

关于python - 如何 pip 安装 Python 程序,使其具有命令行快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44888963/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com