You are not logged in.

#1 2012-05-12 01:42:59

TheStatsMan
Member
Registered: 2010-06-13
Posts: 17

Problem with python2 distutils after recent update [SOLVED]

Hi,

I regularly use f2py2 to compile fortran code to use with Python2. I am currently up to date running Python 2.7.3. Anyway, f2py2 recently stopped working. As an example if I try

[chris@chris pymcmc5]$ f2py2 -c matutil.f -m matutil
Traceback (most recent call last):
  File "/usr/bin/f2py2", line 24, in <module>
    main()
  File "/usr/lib/python2.7/site-packages/numpy/f2py/f2py2e.py", line 588, in main
    run_compile()
  File "/usr/lib/python2.7/site-packages/numpy/f2py/f2py2e.py", line 530, in run_compile
    from numpy.distutils.system_info import get_info
  File "/usr/lib/python2.7/site-packages/numpy/distutils/system_info.py", line 125, in <module>
    from distutils.dist import Distribution
  File "/usr/lib/python2.7/distutils/dist.py", line 10, in <module>
    from email import message_from_file
ImportError: cannot import name message_from_file

The problem, as can be seen from the output appears when trying to import Distribution from distutils.dist. I get the same error if from Ipython2 I try

from distutils.dist import Distribution

I am not sure what I should do to address this issue. I do need f2py2 for my work though so am desparate for a solution. If any more information is required please let me know.

Last edited by TheStatsMan (2012-05-15 08:39:21)

Offline

#2 2012-05-12 04:02:10

Stebalien
Member
Registered: 2010-04-27
Posts: 1,239
Website

Re: Problem with python2 distutils after recent update [SOLVED]

First, try reinstalling python2.7. If that doesn't fix it, upload /usr/lib/python2.7/email/__init__.py.


Steven [ web : git ]
GPG:  327B 20CE 21EA 68CF A7748675 7C92 3221 5899 410C

Offline

#3 2012-05-12 11:32:37

TheStatsMan
Member
Registered: 2010-06-13
Posts: 17

Re: Problem with python2 distutils after recent update [SOLVED]

Thanks for the suggestions. I reinstalled python2.7. This didn't help unfortunately.

here is my /usr/lib/python2.7/email/__init__.py

# Copyright (C) 2001-2006 Python Software Foundation
# Author: Barry Warsaw
# Contact: email-sig@python.org

"""A package for parsing, handling, and generating email messages."""

__version__ = '4.0.3'

__all__ = [
    # Old names
    'base64MIME',
    'Charset',
    'Encoders',
    'Errors',
    'Generator',
    'Header',
    'Iterators',
    'Message',
    'MIMEAudio',
    'MIMEBase',
    'MIMEImage',
    'MIMEMessage',
    'MIMEMultipart',
    'MIMENonMultipart',
    'MIMEText',
    'Parser',
    'quopriMIME',
    'Utils',
    'message_from_string',
    'message_from_file',
    # new names
    'base64mime',
    'charset',
    'encoders',
    'errors',
    'generator',
    'header',
    'iterators',
    'message',
    'mime',
    'parser',
    'quoprimime',
    'utils',
    ]



# Some convenience routines.  Don't import Parser and Message as side-effects
# of importing email since those cascadingly import most of the rest of the
# email package.
def message_from_string(s, *args, **kws):
    """Parse a string into a Message object model.

    Optional _class and strict are passed to the Parser constructor.
    """
    from email.parser import Parser
    return Parser(*args, **kws).parsestr(s)


def message_from_file(fp, *args, **kws):
    """Read a file and parse its contents into a Message object model.

    Optional _class and strict are passed to the Parser constructor.
    """
    from email.parser import Parser
    return Parser(*args, **kws).parse(fp)



# Lazy loading to provide name mapping from new-style names (PEP 8 compatible
# email 4.0 module names), to old-style names (email 3.0 module names).
import sys

class LazyImporter(object):
    def __init__(self, module_name):
        self.__name__ = 'email.' + module_name

    def __getattr__(self, name):
        __import__(self.__name__)
        mod = sys.modules[self.__name__]
        self.__dict__.update(mod.__dict__)
        return getattr(mod, name)


_LOWERNAMES = [
    # email.<old name> -> email.<new name is lowercased old name>
    'Charset',
    'Encoders',
    'Errors',
    'FeedParser',
    'Generator',
    'Header',
    'Iterators',
    'Message',
    'Parser',
    'Utils',
    'base64MIME',
    'quopriMIME',
    ]

_MIMENAMES = [
    # email.MIME<old name> -> email.mime.<new name is lowercased old name>
    'Audio',
    'Base',
    'Image',
    'Message',
    'Multipart',
    'NonMultipart',
    'Text',
    ]

for _name in _LOWERNAMES:
    importer = LazyImporter(_name.lower())
    sys.modules['email.' + _name] = importer
    setattr(sys.modules['email'], _name, importer)


import email.mime
for _name in _MIMENAMES:
    importer = LazyImporter('mime.' + _name.lower())
    sys.modules['email.MIME' + _name] = importer
    setattr(sys.modules['email'], 'MIME' + _name, importer)
    setattr(sys.modules['email.mime'], _name, importer)

Is this what you meant by uploading the file?

Last edited by TheStatsMan (2012-05-12 11:34:00)

Offline

#4 2012-05-12 15:36:39

Stebalien
Member
Registered: 2010-04-27
Posts: 1,239
Website

Re: Problem with python2 distutils after recent update [SOLVED]

What happens when you run `from email import message_from_file` and `from email import message_from_string`.


Steven [ web : git ]
GPG:  327B 20CE 21EA 68CF A7748675 7C92 3221 5899 410C

Offline

#5 2012-05-12 23:03:58

TheStatsMan
Member
Registered: 2010-06-13
Posts: 17

Re: Problem with python2 distutils after recent update [SOLVED]

Stebalien wrote:

What happens when you run `from email import message_from_file` and `from email import message_from_string`.

I just tried both. It seemed to work fine, no errors popped up.

Offline

#6 2012-05-15 08:39:51

TheStatsMan
Member
Registered: 2010-06-13
Posts: 17

Re: Problem with python2 distutils after recent update [SOLVED]

This issue seems to have been fixed in the latest update.

Offline

Board footer

Powered by FluxBB