Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > distutils bdist_wininst failure on Linux

Reply
Thread Tools

distutils bdist_wininst failure on Linux

 
 
Steven D'Aprano
Guest
Posts: n/a
 
      02-23-2012
Following instructions here:

http://docs.python.org/py3k/distutil...ows-installers

I am trying to create a Windows installer for a pure-module distribution
using Python 3.2. I get a "LookupError: unknown encoding: mbcs"

Here is the full output of distutils and the traceback:


[steve@ando pyprimes]$ python3.2 setup.py bdist_wininst
running bdist_wininst
running build
running build_py
creating build/lib
copying src/pyprimes.py -> build/lib
installing to build/bdist.linux-i686/wininst
running install_lib
creating build/bdist.linux-i686/wininst
creating build/bdist.linux-i686/wininst/PURELIB
copying build/lib/pyprimes.py -> build/bdist.linux-i686/wininst/PURELIB
running install_egg_info
Writing build/bdist.linux-i686/wininst/PURELIB/pyprimes-0.1.1a-py3.2.egg-info
creating '/tmp/tmp3utw4_.zip' and adding '.' to it
adding 'PURELIB/pyprimes.py'
adding 'PURELIB/pyprimes-0.1.1a-py3.2.egg-info'
creating dist
Warning: Can't read registry to find the necessary compiler setting
Make sure that Python modules winreg, win32api or win32con are installed.
Traceback (most recent call last):
File "setup.py", line 60, in <module>
"License :: OSI Approved :: MIT License",
File "/usr/local/lib/python3.2/distutils/core.py", line 148, in setup
dist.run_commands()
File "/usr/local/lib/python3.2/distutils/dist.py", line 917, in run_commands
self.run_command(cmd)
File "/usr/local/lib/python3.2/distutils/dist.py", line 936, in run_command
cmd_obj.run()
File "/usr/local/lib/python3.2/distutils/command/bdist_wininst.py", line 179, in run
self.create_exe(arcname, fullname, self.bitmap)
File "/usr/local/lib/python3.2/distutils/command/bdist_wininst.py", line 262, in create_exe
cfgdata = cfgdata.encode("mbcs")
LookupError: unknown encoding: mbcs


How do I fix this, and is it a bug in distutils?



--
Steven
 
Reply With Quote
 
 
 
 
jmfauth
Guest
Posts: n/a
 
      02-23-2012
On 23 fv, 15:06, Steven D'Aprano <steve
(E-Mail Removed)> wrote:
> Following instructions here:
>
> http://docs.python.org/py3k/distutil...eating-windows...
>
> I am trying to create a Windows installer for a pure-module distribution
> using Python 3.2. I get a "LookupError: unknown encoding: mbcs"
>
> Here is the full output of distutils and the traceback:
>
> [steve@ando pyprimes]$ python3.2 setup.py bdist_wininst
> running bdist_wininst
> running build
> running build_py
> creating build/lib
> copying src/pyprimes.py -> build/lib
> installing to build/bdist.linux-i686/wininst
> running install_lib
> creating build/bdist.linux-i686/wininst
> creating build/bdist.linux-i686/wininst/PURELIB
> copying build/lib/pyprimes.py -> build/bdist.linux-i686/wininst/PURELIB
> running install_egg_info
> Writing build/bdist.linux-i686/wininst/PURELIB/pyprimes-0.1.1a-py3.2.egg-info
> creating '/tmp/tmp3utw4_.zip' and adding '.' to it
> adding 'PURELIB/pyprimes.py'
> adding 'PURELIB/pyprimes-0.1.1a-py3.2.egg-info'
> creating dist
> Warning: Can't read registry to find the necessary compiler setting
> Make sure that Python modules winreg, win32api or win32con are installed.
> Traceback (most recent call last):
> * File "setup.py", line 60, in <module>
> * * "License :: OSI Approved :: MIT License",
> * File "/usr/local/lib/python3.2/distutils/core.py", line 148, in setup
> * * dist.run_commands()
> * File "/usr/local/lib/python3.2/distutils/dist.py", line 917, in run_commands
> * * self.run_command(cmd)
> * File "/usr/local/lib/python3.2/distutils/dist.py", line 936, in run_command
> * * cmd_obj.run()
> * File "/usr/local/lib/python3.2/distutils/command/bdist_wininst.py", line 179, in run
> * * self.create_exe(arcname, fullname, self.bitmap)
> * File "/usr/local/lib/python3.2/distutils/command/bdist_wininst.py", line 262, in create_exe
> * * cfgdata = cfgdata.encode("mbcs")
> LookupError: unknown encoding: mbcs
>
> How do I fix this, and is it a bug in distutils?
>
> --
> Steven


Because the 'mbcs' codec is missing in your Linux,

>>> 'abc需'.encode('cp1252')

b'abc\xe9\x9c\x80'
>>> 'abc需'.encode('missing')

Traceback (most recent call last):
File "<eta last command>", line 1, in <module>
LookupError: unknown encoding: missing

jmf
 
Reply With Quote
 
 
 
 
Steven D'Aprano
Guest
Posts: n/a
 
      02-24-2012
On Thu, 23 Feb 2012 07:09:35 -0800, jmfauth wrote:

> On 23 fév, 15:06, Steven D'Aprano <steve
> (E-Mail Removed)> wrote:
>> Following instructions here:
>>
>> http://docs.python.org/py3k/distutil...html#creating-

windows...
>>
>> I am trying to create a Windows installer for a pure-module
>> distribution using Python 3.2. I get a "LookupError: unknown encoding:
>> mbcs"

[...]
>> How do I fix this, and is it a bug in distutils?

>
> Because the 'mbcs' codec is missing in your Linux,


Well duh

This is a bug in distutils. Prompted by your comment I expanded my search
terms and found this bug report:

http://bugs.python.org/issue10945

The problem is that mbcs is not a real codec, it means "whatever codec is
currently configured in Windows". So it doesn't exist on non-Windows
platforms. But distutils bdist_wininst is explicitly documented as
working on non-Windows platforms. Hence, it's a bug.


--
Steven
 
Reply With Quote
 
Steven D'Aprano
Guest
Posts: n/a
 
      02-24-2012
On Fri, 24 Feb 2012 00:11:11 +0000, Steven D'Aprano wrote:

> On Thu, 23 Feb 2012 07:09:35 -0800, jmfauth wrote:
>
>> On 23 fév, 15:06, Steven D'Aprano <steve
>> (E-Mail Removed)> wrote:
>>> Following instructions here:
>>>
>>> http://docs.python.org/py3k/distutil...html#creating-

> windows...
>>>
>>> I am trying to create a Windows installer for a pure-module
>>> distribution using Python 3.2. I get a "LookupError: unknown encoding:
>>> mbcs"

> [...]
>>> How do I fix this, and is it a bug in distutils?

>>
>> Because the 'mbcs' codec is missing in your Linux,

>
> Well duh
>
> This is a bug in distutils. Prompted by your comment I expanded my
> search terms and found this bug report:
>
> http://bugs.python.org/issue10945
>
> The problem is that mbcs is not a real codec, it means "whatever codec
> is currently configured in Windows". So it doesn't exist on non-Windows
> platforms. But distutils bdist_wininst is explicitly documented as
> working on non-Windows platforms. Hence, it's a bug.



And I have a work-around that seems to work for me. Put this at the top
of your setup.py install script:



# Work around mbcs bug in distutils.
# http://bugs.python.org/issue10945
import codecs
try:
codecs.lookup('mbcs')
except LookupError:
ascii = codecs.lookup('ascii')
func = lambda name, enc=ascii: {True: enc}.get(name=='mbcs')
codecs.register(func)




--
Steven
 
Reply With Quote
 
Bob Bowles
Guest
Posts: n/a
 
      08-06-2012

Steven D'Aprano-11 wrote
>
> And I have a work-around that seems to work for me. Put this at the top
> of your setup.py install script:
>
>
>
> # Work around mbcs bug in distutils.
> # http://bugs.python.org/issue10945
> import codecs
> try:
> codecs.lookup('mbcs')
> except LookupError:
> ascii = codecs.lookup('ascii')
> func = lambda name, enc=ascii: {True: enc}.get(name=='mbcs')
> codecs.register(func)
>
>

Nice one, worked first time! Thanks!



--
View this message in context: http://python.6.n6.nabble.com/distut...9p4984209.html
Sent from the Python - python-list mailing list archive at Nabble.com.
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
distutils, No module named numpy.distutils.fcompiler.conv_template Luis Alberto Zarrabeitia Gomez Python 0 03-30-2009 03:56 PM
can distutils windows installer invoke another distutils windows installer timw.google Python 1 05-11-2006 10:07 PM
bdist_wininst strangeness Dominic Python 0 05-06-2004 08:48 PM
Distutils: bdist_wininst. System integration use. (--silent option?,etc.) Peter Schmiedeskamp Python 1 11-01-2003 08:49 AM
Building extensions with mingw32 -- bdist_wininst fails. Chris Gonnerman Python 7 08-08-2003 11:19 PM



Advertisments