2

今日は Python をいじって、独自のモジュールを作成しようとしています。私は Python の名前空間を完全には理解していないようです。誰かが私の質問に答えてくれるのではないかと思います。

これが私がやったことの例です:

次の構造を持つ mytest という名前のモジュールを作成しました。

mytest/
....setup.py
....bin/
....docs/
....mytest/
........__init__.py
........test.py
....tests/

test.py には、次の 1 つのメソッドが含まれています。

def say_hello():
    print "Hello"

distutils 経由で mytest をインストールしました。「pip list」を使用すると、モジュールがインストールされていることがわかります。

今のところ大丈夫ですが、これから使いたいと思います。テスト スクリプト moduletest.py を作成しました。

from mytest import test

test.say_hello()

これを実行すると正常に動作し、「Hello」メッセージが出力されます。私はこれに満足し、モジュールをインポートする他の方法をいじり始めました。

以下はすべて正常に動作するようです:

from mytest.test import say_hello

say_hello()

と:

import mytest.test as test

test.say_hello()

ただし、次の場合は機能しません。

import mytest

test.say_hello()

と:

import mytest

mytest.test.say_hello()

と:

import mytest.test

test.say_hello()

mytest モジュール全体をインポートしてから必要な部分を使用できない理由、または mytest.test (インポートmytest.test)?

私の理解は少しずれていると思いますが、いくつかの説明が本当に役に立ちます。ありがとう!

4

2 に答える 2

3

あなたがするとき:

import mytest.test

mytest.testではなく、グローバル名前空間に追加していtestます。だからあなたができることは次のとおりです:

import mytest.test

mytest.test.say_hello()

行のみを使用したい場合は、ディレクトリ内のファイルをimport mytest編集して次のようにする必要があります。__init__.pymytest

import mytest.test

次に、これを行うことができます:

import mytest

mytest.test.say_hello()
于 2013-10-20T17:36:51.857 に答える