Python:如何在setup.py中包含脚本的exe文件

时间:2012-07-23 00:19:49

标签: python python-3.x

我正在努力学习Python,使用Zed A.Shaw的书“学习Python”。 在exercise 46。我应该创建一个项目框架(即创建一个setup.py文件,创建模块等)。然后做一个项目。

我必须在我的bin目录中放置一个可以为我的系统运行的脚本。我编写了简单的Hello World!脚本,使用 cxfreeze 将其转换为.exe文件。

但是,当我尝试安装我的setup.py文件时(即在cmd中键入python setup.py install),我无法安装此.exe文件而只能安装脚本script.py 我该如何安装这个exe文件。 这是我的setup.py文件:

try:
    from setuptools import setup
except ImportError:
    from distutils.core import setup

config = {
    'description':  'First project',#ex46
    'author':  'author',#
    'url':  '',#N/A
    'download_url':  '',#N/A
    "author_email":  "author_email@email.com"
    'versio':  '3.1',
    'install_requires': ['nose'],
    'packages': ['skeleton\quiz46','skeleton\\tests'],
    'scripts':  ['skeleton\\bin\helloscript.py','skeleton\\bin\helloscript.exe'],
    'name':  'quiz46'
}

但是这给了我以下错误:

UnicodeDecodeError

我也尝试过使用skeleton \ bin \ helloscript.exe,但这给了我一个类似的错误!

我的操作系统是Windows 7,我使用的是Python 3.1。

我想要的是setup.py安装我的.exe文件,而不仅仅是它的脚本。

1 个答案:

答案 0 :(得分:4)

我不认为script选项是为了处理除文本文件之外的任何内容。如果您查看distribute (aka setuptools)的源代码,write_script命令将尝试encode('ascii')内容,如果它不是python脚本并且您使用的是Python 3。 cxfreeze exe是一个二进制文件,而不是文本文件,可能导致这种情况发生阻塞。

setuptools在安装过程中包含可执行脚本的更简单选项是使用entry_points中的setup.py选项,而不是scripts

entry_points={'console_scripts':['helloscript = helloscript:main'] }

console_script将自动换行原始helloscript.py脚本并创建exe(在Windows上)并将其安装到Python的Script目录中。无需使用cxfreeze等内容。