cookbook_モジュールやパッケージ

モジュールパッケージは、階層構造に編成されています

ただ、__init__.pyが可能で、各ディレクトリが定義されていることを確認してください。

すべてのシンボルの導入の2精密制御

ユーザは、モジュールのインポート*文で使用するとき、私たちは、モジュールやパッケージを正確に制御からインポートシンボルを願っています。

モジュール__all__で定義された変数は、名前を表示するために使用されるシンボルを導出することができる示します。

__all__ = [ "スパム"、 "完全に理解"]

 

3相対導入パッケージ名サブモジュールを使用して

mypackageと/
   __init__ の.py 
  A /
     __init__ の.py 
    spam.py 
    grok.py 
  B /
     __init__ の.py 
    bar.py 
    
 spam.py 
 から輸入GROK
  から ..B 輸入バー

バッグ・モジュールをインポートするには、このメソッドを使用し、それはファイル名の変更の上部はすべての問題をインポートします場合は、輸入の絶対名を使用している場合、インポートモジュールを減らすためには良いハードコーディングされたことができます。

PS。

スクリプトは、インポートエラーを実行するとき   のpython3 -m mypackageと

 

複数のファイルにモジュール4

複数のモジュールにモジュールの構造を破壊することなく使用した場合の

パッケージに最初のモジュール、パッケージ内のサブモジュール__init__.pyファイルを導入します。

 

5統一名前空間の下に、各ディレクトリのインポートのコードをしてみましょう

foo_package / 
  スパム / 
    blah.py 
bar_package / 
  スパム / 
    grok.py 
    
インポートSYSの
sys.path.extend([ " foo_package "" bar_package " ])
 インポートspam.blahの
 インポート spam.grok

共通の名前空間として、両方のディレクトリのスパムでは、これらの2つのディレクトリへの関心が__init__.pyファイルではありません支払います。

 

6リロードモジュール

開発環境は、本番環境を使用しないようにしよう

輸入IMP
 輸入数学
imp.reload(数学)

 

7 zipファイルまたはディレクトリスクリプトがなるために実行できるように

MyApplicationを/ 
  spam.py 
  bar.py 
  grok.py 
  __main__ の.py 
  
  PythonのMyApplicationを
  
  あなたが__main__.pyファイルが含まれている場合、あなたは、実行するスクリプトなどの方法で__main__.py実行することができます

 

8は、パッケージ内のデータファイルを読み込み

mypackageと/
   __init__ の.py 
  somedata.dat 
  spam.pyが見つかった
  
インポートpkgutil 
データ = pkgutil.get_data(__PACKAGE__" somedata.dat " 

#データのバイト列になります
 

9はのsys.pathにディレクトリに追加しました

三つのソリューションは、最初はPYTHONPATH環境変数の使用を追加することです。

ENV PYTHONPATH = /いくつかの/ディレクトリ:/その他/ディレクトリののpython3

 

第二は、site_packagesパイソンの.pthのファイルを.pthファイルを作成することです

#mtapplication 
/いくつかの/ディレクトリ
/その他/ディレクトリ

第三は、コードにハードコードされています

インポートのSYS 
sys.path.insert(0、" /何らかの/ DIR " 
sys.path.insert(0、" /その他/ DIR "

 

10文字列の名前を指定してインポートモジュール

インポートのimportlib 
数学 = importlib.import_module(" 数学"

 

おすすめ

転載: www.cnblogs.com/jiaojianglong/p/11260225.html