如何配置setup.py
在Windows平台上安装带有.py
前缀的脚本,但在所有其他脚本上都没有前缀?我要解决的问题是Windows requires a .py
extension to recognize and execute Python scripts。
我有一个如下所示的程序包:
MyPackage
├── CHANGES
├── ...
├── scripts
│ └── myprogram
├── setup.py
└── mypackage
├── __init__.py
├── ...
└── myprogram.py
在我的setup.py文件中,我声明
scripts/myprogram
为具有以下内容的可安装脚本:#!/usr/bin/env python
# -*- coding: UTF-8 -*-
from setuptools import setup
...
setup(
name='MyPackage',
...
packages=['mypackage'],
scripts=['scripts/myprogram'],
...
)
myprogram
脚本只是一个薄包装,它简单地调用mypackage.myprogram.main()
:#!/usr/bin/env python
# -*- coding: UTF-8 -*-
from mypackage import myprogram
myprogram.main()
在* nix平台上,这是通过
myprogram
的名称将myprogram
安装为可执行文件,这是我想要的,但是在Windows上,它也以myprogram
的形式安装在C:\PythonXX\Scripts
目录中,因此无法识别在命令行上。如何获得安装脚本以在Windows上将myprogram
安装为myprogram.py
,以便Windows识别文件类型以使其可执行? 最佳答案
我找到了答案:setup()
的关键字参数称为entry_points
,带有一个包含'console_scripts'
的字典,如this answer中对related question所述。
新的setup
调用如下所示:
setup(
name='MyPackage',
...
packages=['mypackage'],
entry_points={
'console_scripts': [
'myprogram = mypackage.myprogram:main'
]
}
...
)
进行了这些更改之后,我从其中删除了
scripts
目录和myprogram
文件。现在,在运行安装程序时,distribute在
C:\PythonXX\Scripts
下创建两个文件:myprogram-script.py
和myprogram.exe
。结果,用户现在可以在* nix或Windows平台的命令行上输入myprogram
,并且始终让它运行相同的程序。非常便利!关于python - 在Windows平台上安装脚本时添加.py扩展名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14264234/