[Python-Dev] Import and unicode: part two

Glenn Linderman v+python at g.nevcal.com
Thu Jan 20 08:36:42 CET 2011

On 1/19/2011 11:20 PM, Toshio Kuratomi wrote:
> On Wed, Jan 19, 2011 at 09:02:17PM -0800, Glenn Linderman wrote:
>> On 1/19/2011 8:39 PM, Toshio Kuratomi wrote:
>>      use this::
>>         import cafe as café
>>      When you do things this way you do not have to translate between unknown
>>      encodings into unicode.  Everything is within python source where you have
>>      a defined encoding.
>> This is a great way of converting non-portable module names, if the module ever
>> leaves the bounds of its computer, and runs into problems there.
> You're missing a piece here.  If you mandate ascii you can convert to
> a unicode name using "import as" because python knows that it has ascii text
> from the filesystem when it converts it to an abstract unicode string that
> you've specified in the program text.  You cannot go the other way because
> python lacks the information (the encoding of the filename on the
> filesystem) to do the transformation.
>> Your demonstration of such an easy solution to the concerns you raise convinces
>> me more than ever that it is acceptable to allow non-ASCII module names.  For
>> those programmers in a single locale environment, it'll just work.  And for
>> those not in a single locale environment, there is your above simple solution
>> to achieve portability without changing large numbers of lines of code.
> Does my demonstration that you can't do that mean that it's no longer
> acceptable?  :-)
> /me guesses that the relative merits of being forced to write portable code
> vs convenience of writing a module name in your native script still has
> a different balance than in mine, thus the smiley :-)
> -Toshio

Sadly, you didn't demonstrate it, you seem to have misunderstood my 
statement, which was probably not all that clear, somehow.  Let me try 

User codes module   café.py, tests, debugs, completes, is happy.
User moves code to a different computer, different locale, no é 
character, module can't be found, is sad.
User renames file to cafefromuser.py, changes the import statement from

import café


import cafefromuser as café

module now imports successfully, no other code changes needed.  User is 
happy again, thanks Toshio for great solution to file system encoding 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20110119/e112a439/attachment.html>

More information about the Python-Dev mailing list