python - 从 CLI 运行 python 轮,就像它是单个脚本一样
问题描述
我希望在 Azure Databricks 中制作一个 python 轮作为 spark-submit 作业上传,但我无法验证我的轮是否正常工作。我不明白对轮子的调用在哪里或如何找到该__main__
方法。
如何以运行 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
or __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__.py
如下main.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']
)
非常感谢!
解决方案
轮子文件的路径必须包含轮子内的顶级文件夹才能找到__main__
从我的示例中,顶级文件夹称为“today”:
C:\<DIRECTORYPATH>\\dist\\today-0.0.1-py3-none-any.whl\\today
推荐阅读
- android - 将系统应用程序置于调试模式的影响?
- javascript - React - IE11 - 访问过的链接在刷新时未被识别为访问过
- java - fromString 方法中 BitSet valueOf 的目的是什么
- c - Haskell FFI:传入和返回ByteStrings的正确方法
- c# - Microsoft.NETCore.App 更新到 2.1.0-rc 问题
- c# - Unity3D安卓USB通讯
- android - 通过 Android 项目的源代码控制共享代码样式时遇到问题 (Android Studio)
- sql - 限制 SQL Server 中动态 SQL 的执行时间
- react-native - 我不能创建一个 react-native 项目?
- delphi - 升级 Indy 库以使用最新的 OpenSSL 库