Issue 708320: DistributionMetaData error ? (original) (raw)
I'm trying to create an .exe from python files and got the following errors :
L:\build\gimini\giminiV15-2-exe\src>c:\python22\python setup.py py2exe Traceback (most recent call last): File "setup.py", line 8, in ? data_files=[ ( "img", File "C:\PYTHON22\distutils\core.py", line 101, in setup setup_distribution = dist = klass(attrs) File "C:\PYTHON22\distutils\dist.py", line 130, in init setattr(self, method_name, getattr(self.metadata, method_name)) AttributeError: DistributionMetadata instance has no attribute 'get___doc_'
C.Dutoit
I'm running py2exe on python 2.6 and have this error, too. I'm look through distutils/dist.py and read following:
self.metadata = DistributionMetadata()
method_basenames = dir(self.metadata) +
['fullname', 'contact', 'contact_email']
for basename in method_basenames: method_name = "get_" + basename setattr(self, method_name, getattr(self.metadata, method_name))
I'm printing dir(self.metadata) and get this lines: ['doc', 'init', 'module', 'author', 'author_email', 'description', 'get_author', 'get_author_email', 'get_co ntact', 'get_contact_email', 'get_description', 'get_fullname', 'get_keywords', 'get_licence', 'get_long_description', ' get_maintainer', 'get_maintainer_email', 'get_name', 'get_platforms', 'get_url', 'get_version', 'keywords', 'licence', ' long_description', 'maintainer', 'maintainer_email', 'name', 'platforms', 'url', 'version', 'write_pkg_info']
code in dist.py trying add all methods from metadata to self, even 'magic' and getters. I think, that's wrong, because no method like get___doc, get_get_contact and other. I'm solve this problem by adding regexp for checking is this method allow for adding to self.
this is my (ugly, i think) code: for basename in method_basenames: if re.match(r'(|get|write)\w+', basename) is None: #MY FIXES! method_name = "get_" + basename setattr(self, method_name, getattr(self.metadata, method_name))
With this change, all py2exe works work correctly (and i don't try distutils in other cases). P.S. i don't know, is this python or py2exe problem: maybe py2exe replcae nature python distutils module.