[Distutils] distutils 0.1 problem and fix

Amos Latteier amos@aracnet.com
Wed, 29 Sep 1999 11:57:03 -0700


Three cheers for distutils 0.1!

Unfortunately it fails to install itself on my NT box.

D:\TEMP\Distutils-0.1>python setup.py -v install
running install
running build
running build_py
not copying distutils\ccompiler.py (output up-to-date)
not copying distutils\core.py (output up-to-date)
not copying distutils\errors.py (output up-to-date)
not copying distutils\fancy_getopt.py (output up-to-date)
not copying distutils\msvccompiler.py (output up-to-date)
not copying distutils\spawn.py (output up-to-date)
not copying distutils\sysconfig.py (output up-to-date)
not copying distutils\text_file.py (output up-to-date)
not copying distutils\unixccompiler.py (output up-to-date)
not copying distutils\util.py (output up-to-date)
not copying distutils\version.py (output up-to-date)
not copying distutils\__init__.py (output up-to-date)
not copying distutils\command\build.py (output up-to-date)
not copying distutils\command\build_ext.py (output up-to-date)
not copying distutils\command\build_py.py (output up-to-date)
not copying distutils\command\dist.py (output up-to-date)
not copying distutils\command\install.py (output up-to-date)
not copying distutils\command\install_ext.py (output up-to-date)
not copying distutils\command\install_py.py (output up-to-date)
not copying distutils\command\__init__.py (output up-to-date)
running install_py
creating D:\Python1.5.2
Traceback (innermost last):
  File "setup.py", line 22, in ?
    packages = ['distutils', 'distutils.command'],
  File "distutils\core.py", line 87, in setup
    dist.run_commands ()
  File "distutils\core.py", line 377, in run_commands
    self.run_command (cmd)
  File "distutils\core.py", line 426, in run_command
    cmd_obj.run ()
  File "distutils\command\install.py", line 287, in run
    self.run_peer ('install_py')
  File "distutils\core.py", line 710, in run_peer
    self.distribution.run_command (command)
  File "distutils\core.py", line 426, in run_command
    cmd_obj.run ()
  File "distutils\command\install_py.py", line 51, in run
    outfiles = self.copy_tree (self.build_dir, self.install_dir)
  File "distutils\core.py", line 773, in copy_tree
    self.distribution.dry_run)
  File "distutils\util.py", line 318, in copy_tree
    mkpath (dst, verbose=verbose)
  File "distutils\util.py", line 74, in mkpath
    raise DistutilsFileError, "%s: %s" % (head, errstr)
distutils.errors.DistutilsFileError: D:\Python1.5.2: File exists


To fix this I changed line 317 of distutils/util.py to:

    if not dry_run and not os.path.exists(os.path.normpath(dst)):

This checks to see if the destination directory already exists before
creating it. Note: I had to use normpath since for me dst was
'D:\\Python1.5.2\\' which os.path.exists claims doesn't exist, while
'D:\\Python1.5.2' does exist.

-Amos