运行 来自 CLI 的 python 轮子,就好像它是单个脚本一样

Run a python wheel from CLI as if it were a single script

我希望制作一个 python 轮子作为 Azure Databricks 中的火花提交作业上传,但我无法验证我的轮子是否正常工作。我不明白轮盘调用在哪里或如何找到 __main__ 方法。

如何构建包 and/or 在命令行上以 main 方法获取的方式调用 wheel 文件 运行?

下面是我正在尝试的一个简单的包;它所做的只是回显今天的日期。

我试过的一些命令 运行 脚本:

python dist/today-0.0.1-py3-none-any.whl/
python dist/today-0.0.1-py3-none-any.whl/__main__
python dist/today-0.0.1-py3-none-any.whl/main

我尝试了很多关于命名主文件 main.py__main__.py 以及命名方法 main__main__ 的变体,但一切都给出了我同样的错误: C:\Python391\python.exe: can't find '__main__' module in 'C:\<DIRECTORYPATH>\dist\today-0.0.1-py3-none-any.whl'

该包由一个空的 __init__.pymain.py 组成,看起来像:

import datetime

def main():
    print(f'Today is {datetime.date.today()}')

if __name__ == '__main__':
    main()

我的目录结构是:

Wheeltest
  |-- setup.py
  |-- today
       |-- __init__.py
       |-- __main__.py

我已经解压了 wheel 文件,可以确认它在文件夹 today 的顶层,里面有 2 个 py 文件。 我的 setup.py 文件看起来像这样(我也试过没有 entry_points 部分):

from setuptools import setup
from setuptools import find_packages

VERSION = '0.0.1'
DESCRIPTION = 'today package.'
LONG_DESCRIPTION = 'today dist.'

# Setting up
setup(
    name='today',
    version=VERSION,
    author='Simon Norton',
    author_email='<xxxxxxxx@yyyyy.com>',
    description=DESCRIPTION,
    long_description=LONG_DESCRIPTION,
    packages=find_packages(),
    entry_points={
        'console_scripts': ['main=today.__main__:main']
    },
    classifiers=['Development Status :: Testing',
        'Programming Language :: Python :: 3',
        'Operating System :: Microsoft :: Windows',
        'Operating System :: Linux']
)

非常感谢!

wheel 文件的路径必须包含 wheel 内的顶级文件夹才能找到 __main__ 从我的示例中,顶级文件夹称为“today”:

C:\<DIRECTORYPATH>\dist\today-0.0.1-py3-none-any.whl\today