1

我正在尝试使用 Zed A.Shaw 的书 Learn Python the hard way 自己学习 Python。在练习 46中。我应该创建一个项目框架(即创建一个 setup.py 文件,创建模块,等等)。然后做一个项目。

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

但是,当我尝试安装 setup.py 文件(即通过输入python setup.py installcmd)时,我无法安装此 .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 文件,而不仅仅是脚本。

4

1 回答 1

4

我不认为该script选项旨在处理文本文件以外的任何内容。如果您查看分发(又名 setuptools)的源代码,如果它不是 python 脚本并且如果您使用的是 Python 3 ,该write_script命令将尝试查看内容。您的exe 是二进制文件,而不是文本文件,并且很可能导致它窒息。encode('ascii')cxfreeze

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

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

console_script它将自动包装您的原始脚本helloscript.py并创建一个exe(在 Windows 上)并将其安装到您的 PythonScript目录中。无需使用类似cxfreeze.

于 2012-07-23T04:45:43.167 回答