2017-11-17 15 views
0

私は配布可能なPythonモジュールを作りたいので、ユーザーにを呼び出すには、パッケージ名を呼び出すだけで私のモジュールの中で関数を呼び出したいと思っています。パッケージ名を使ってPythonモジュールを呼び出す方法

/my_package/
/my_package/__init__.py
/my_package/SRC/
/my_package/src/__init__.py
/my_package/src/my_module.py

と、mymodule.pyの内容:

def test():pri NT( '!こんにちは')この場合

は、私は、ユーザーがように私のモジュールを使用できるようにしたい:MPとして

>>>インポートmypackageと
>>> mp.test()
こんにちは!

テンソルフロー、numpyなどと同じです。

__init__.pyファイルとパス情報をどのように設定する必要がありますか?

は、事前にありがとう:)

答えて

1

をファイルに:

/my_package/__init__.py

の行を追加します。

from src.my_module import test 
+0

ああ、感謝を!出来た! :) –

+0

もう1つの質問...内部パッケージを「隠す」場合、どうすればいいですか?例: リポジトリに/my_package/src/my_module.pyに "MyClass"がある場合、ユーザがコンソールに "type(MyClassInstance)"と入力すると ""が返されます。 私は次のように表示したい: 何か提案がありますか?私は既にself .__ module__の文字列を変更しようとしましたが、うまくいきませんでした。 –

0

を私はあなただけtestを公開したくないと仮定します他の多くの機能があります。したがって、他の人が使用する外部メソッドを公開するmy_package/__init__.pyのリストを個別に維持することができます。

だから、あなたのmy_package/__init__.pyあなたが現在について__all__を読むことができ

from src.my_module import test 


__all__ = [test, ] 

次のようになります。https://docs.python.org/2/tutorial/modules.html#importing-from-a-package

+0

完璧!多くを感謝:) –

+0

それはあなたを助けてくれてうれしい!あなたはupvote /それは他の人にも役立つように答えを受け入れることができます:) –

関連する問題