Python 在Windows平台上安装脚本时添加.py扩展名
如何将Python 在Windows平台上安装脚本时添加.py扩展名,python,package,Python,Package,如何将setup.py配置为在Windows平台上安装带有.py前缀的脚本,但在所有其他平台上都没有前缀?我想解决的问题是 我的软件包设置如下: MyPackage ├── CHANGES ├── ... ├── scripts │ └── myprogram ├── setup.py └── mypackage ├── __init__.py ├── ... └── myprogram.py 在我的setup.py文件中,我声明scripts/myprogram为
setup.py
配置为在Windows平台上安装带有.py
前缀的脚本,但在所有其他平台上都没有前缀?我想解决的问题是
我的软件包设置如下:
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()
:
在*nix平台上,它以
myprogram
的名称将myprogram
安装为可执行文件,这正是我所希望的,但在Windows上,它也以myprogram
的形式安装在C:\PythonXX\Scripts
目录中,因此在命令行上无法识别。如何让安装脚本在Windows上安装myprogram
为myprogram.py
,以便Windows识别文件类型以使其可执行?我找到了答案:setup()
的一个关键字参数,名为entry\u points
,其中包含'console\u scripts'
,如a中所述
新的setup
调用如下所示:
setup(
name='MyPackage',
...
packages=['mypackage'],
entry_points={
'console_scripts': [
'myprogram = mypackage.myprogram:main'
]
}
...
)
在做了这些更改之后,我从中删除了脚本
目录和myprogram
文件
现在运行安装程序时,distribute在C:\PythonXX\Scripts
下创建两个文件:myprogram script.py
和myprogram.exe
。因此,用户现在可以在*nix或Windows平台的命令行上输入myprogram
,并始终让它运行相同的程序。非常方便
setup(
name='MyPackage',
...
packages=['mypackage'],
entry_points={
'console_scripts': [
'myprogram = mypackage.myprogram:main'
]
}
...
)