14

我正在尝试在 Windows 7 64 位上使用 distutils.dir_util 。据我可以从各种谷歌搜索中收集到,我可能需要单独安装一些 distutils 包?我确实有可用的基本 distutils 包,但是它似乎非常精简,并且缺少许多组件。尝试研究 distutils 和 windows 总是让我找到 python 构建脚本以及如何将 distutils 打包为可再发行 python 项目的一部分或构建我不感兴趣的 EXE,我根本看不到在哪里获得它的任何牵引力代码来自。

已经很长时间了,但是我想我是从 MSI 安装程序安装 Python 的,不确定其他方法是否常见。这是我的解释器输出:

Python 2.7.3 (default, Apr 10 2012, 23:24:47) [MSC v.1500 64 bit (AMD64)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> import distutils
>>> distutils.dir_util
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'dir_util'

OK 看起来可以使用以下代码:

Python 2.7.3 (default, Apr 10 2012, 23:24:47) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import distutils.core
>>> distutils.dir_util
<module 'distutils.dir_util' from 'C:\apps\Python27\lib\distutils\dir_util.pyc'>

任何人都可以解释为什么需要这种方法或者它是如何工作的吗?

4

1 回答 1

27

在 2.7.5 上,我可用的最旧版本,以下对我有用:

    #Both imports are needed to avoid errors
    import distutils
    from distutils import dir_util

    distutils.dir_util.copy_tree("./foo", "./bar")

如果我省略“import distutils”,我会收到错误消息:

NameError:名称“distutils”未定义

如果我省略了 from import,我会收到错误消息:

AttributeError:“模块”对象没有属性“dir_util”

对于你问的最后一个问题,我只能猜测为什么,也许开发人员出于大小/空间/效率的原因可能想要隐藏 distutils 导入的大部分内容。

于 2015-10-29T14:53:15.143 回答