无法在Windows上导入distutils.dir_util

Dan*_*anH 9 python distutils windows-7-x64

我正在尝试在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'
Run Code Online (Sandbox Code Playgroud)

好的,看起来可以使用以下代码:

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'>
Run Code Online (Sandbox Code Playgroud)

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

kma*_*rsh 19

在2.7.5,我可用的最老的,以下为我工作:

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

    distutils.dir_util.copy_tree("./foo", "./bar")
Run Code Online (Sandbox Code Playgroud)

如果我遗漏"import distutils",我会收到错误:

NameError:未定义名称'distutils'

如果我遗漏了导入,我收到错误:

AttributeError:'module'对象没有属性'dir_util'

对于你提出的最后一个问题,我只能猜测为什么,或许开发人员可能想要为了大小/空间/效率原因隐藏导入的大部件.

  • Python 3.5.2 上也是如此。 (3认同)
  • 奇怪的!我在Python 3.6.4上也一样 (2认同)