14

Windows 7 64bit で 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'

次のコードでこれが可能であるように見えます:

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 インポートを省略すると、次のエラーが表示されます。

AttributeError: 'module' オブジェクトに属性 'dir_util' がありません

あなたが尋ねる最後の質問について、私は理由を推測することしかできません。おそらく、開発者は、サイズ/スペース/効率の理由から、distutils インポートのために大きな部分を隠したいと思ったのかもしれません。

于 2015-10-29T14:53:15.143 に答える