我正在努力学习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文件,而不仅仅是它的脚本。
答案 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
等内容。