Python包的命令行脚本是否仅支持Linux?Windows如何正常运行?
Python包的命令行脚本不是Linux独有的特性,Windows下完全可以正常运行,你遇到的问题是文件命名和配置方式不符合Windows系统的可执行文件识别规则导致的。
问题原因
Windows系统依靠后缀名判断文件的打开程序,你存放在bin目录下的funniest-joke脚本没有.py后缀,系统无法识别它是需要用Python解释器执行的脚本,因此会弹出打开方式选择窗口。
解决方案
这里提供两种常用的解决方法,更推荐使用第二种跨平台兼容性更好的方案:
方案1:修改scripts写法适配Windows
- 将
bin/funniest-joke文件重命名为bin/funniest-joke.py - 修改
setup.py中的scripts参数配置为:
scripts=['bin/funniest-joke.py']
- 重新执行
pip install -e .即可,之后直接在命令行输入funniest-joke就能正常运行。
方案2:使用entry_points配置(推荐)
这是目前Python打包官方更推荐的跨平台命令行脚本配置方式,无需手动处理文件后缀,setuptools会自动为Windows生成可执行exe文件,Linux/macOS也能正常适配:
- 删掉
setup.py中的scripts参数,新增entry_points配置,修改后的setup.py内容如下:
import setuptools setuptools.setup( name='test', packages=setuptools.find_packages(), entry_points = { 'console_scripts': [ 'funniest-joke = funniest:run_joke', ] } )
- 在
funniest/__init__.py中添加对应的执行函数:
from .funniest import joke def run_joke(): print(joke)
- 重新执行
pip install -e .,之后直接在命令行输入funniest-joke即可正常运行,不会再弹出打开方式窗口。
内容的提问来源于stack exchange,提问作者user32882
相关产品推荐
相关产品推荐

