我的目标是,安装 python 包后,能够运行命令,而不必在命令前键入
python
。
$ excommand
Hello, World!
.
├── example
├── __init__.py
└── exmodule.py
├── .venv
├── pyproject.toml
└── setup.cfg
exmodule.py
def command():
print("Hello, World!")
pyproject.toml
[build-system]
requires = [ "setuptools" ]
build-backend = "setuptools.build_meta"
设置.cfg
[metadata]
name = Example
version = 1.0.0
[options]
packages = find:
[options.entry_points]
console_scripts =
excommand = example.exmodule:command
在终端执行以下命令后:
$ python3 -m build --wheel
终端上没有打印任何警告或错误,但命令不起作用:
$ excommand
zsh: command not found: excommand
在使用 TOML 文件之前,我只是将
setup.cfg
文件与 setup.py
一起使用,但是当使用命令 pip install .
安装软件包时,我被警告说未来版本的 pip 将保证使用 TOML 文件。它也不起作用,所以尝试使用 TOML。
使用较新的 setuptools 和 pyproject.toml 您可以使用: (仅包含相关部分)
[build-system]
build-backend = 'setuptools.build_meta'
requires = ["setuptools>=69.2.0", "setuptools-scm"]
[tool.setuptools]
packages = ["yourpackage"]
[project.scripts]
yourbinary = "yourpackage.yourpackage:main"
您必须在 yourpackage.yourpackage.py 中创建一个
main()
函数:
#<all your fantastic code>
def main():
parser = argparse.ArgumentParser(description='superdupermain')
parser.add_argument('--debug', help='debug', action='store_true')
:
if __name__ == '__main__':
main()
当您在
pip install yourpackage
中运行 <venv>
时,它将安装:
<venv>\lib\site-packages\yourpackage\yourpackage.py
<venv>\scripts\yourbinary.exe
它将在您的路径中,以便您可以执行
yourbinary.exe
对于 Linux 来说,它将是一个可执行文件 yourbinary