ます。http:モジュール定義へのパッケージのためにここに書かれ//www.imooc.com/article/247114が良いです。
この参照リンクは相対パスは、スクリプトの形で直接実行することはできませんなぜ私は非常に明確に述べ、また非常に良いです。
https://www.jianshu.com/p/04bac02ae3f0
Pythonの標準ライブラリのインポートを使用する前にXXX
またはxxxの輸入XXXから
実際には、[OK]を使用することができますされていた無系統的な研究での使用に固有の技術があります
Pythonで比較的詳細な紹介があるクックブックに到着し、私は自分自身にいくつかの簡単にいくつかのレコードを選びました。
まずPythonはPythonの環境変数を持って、我々は外部からまたはPython環境変数からインポートすることができますがあり、ここで私のIPython環境変数です。
sys.path:[5]では アウト[5]: [ 'は/ usr / local /ビン'、 「/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/lib/python37 .zipファイル' '/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/lib/python3.7'、 ' /usr/local/Cellar/python/3.7.4/Frameworks /Python.framework/Versions/3.7/lib/python3.7/lib-dynload ' ''、 '/usr/local/lib/python3.7/site-packages'、 'は/ usr / local / lib /のpython3。 7 /のsite-packages / IPython /拡張 、'/Users/shijianzhong/.ipython']
Pythonは、非常に興味深い先端を持っているあなたは、ファイルを実行すると、そのファイルのフォルダがPYTHONPATHの内側に参加することです。
shijianzhongdeMacBook-プロ:フォーマットshijianzhong $のpython3 jpg.py [ '/ユーザ/ shijianzhong /研究/ PythonCookbook / charter_10 / t_10_1_2 /グラフィックス/書式'、
「/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework /Versions/3.7/lib/python37.zip '
'/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/lib/python3.7'、
'は/ usr / local /セラー/python/3.7.4/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload」、 '/usr/local/lib/python3.7/site-packages'] shijianzhongdeMacBook-プロ:フォーマットshijianzhong $ PWD /ユーザ/ shijianzhong /研究/ PythonCookbook / charter_10 / t_10_1_2 /グラフィック/フォーマット
これは彼がパッケージとして(最上位のフォルダである)自分のフォルダだったとPython環境変数に入れて、内部のファイルの私の比較の一つです。
このフォルダには、すべてのパッケージが含まれており、モジュールを以下に紹介することができます。
私Pycharmは私がした、新しいワーキングペーパー、Pycharmのデフォルト設定は、Python環境にこのディレクトリを作成し動作します
/ユーザ/ shijianzhong /研究/ PythonCookbook / charter_10 / t_10_1_2
以下は、ファイルの内容は次のとおりです。
└──グラフィック ├──を__init__.py ├──__pycache__ │└──__init __。CPythonの-37.pyc ├──形式 │├──を__init__.py │├──jpg.py │└──png.py └──プリミティブ ├──を__init__.py ├──__pycache__ │└──__init __。CPythonの-37.pyc ├──fill.py ├──line.py └──text.py
まず第一に、私は単純に説明するために、このケースを渡すつもりです。
[1]:インポートSYS [2]:のsys.path OUT [2]: [ 'は/ usr / local /ビン'、 「/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/バージョン/ 3.7 / libに/ python37.zip ' '/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/lib/python3.7'、 'は/ usr / local /セラー/パイソン/ 3.7.4 /フレームワーク/ Python.framework /バージョン/ 3.7 / libに/ python3.7 / libに-dynload ' ''、 '/usr/local/lib/python3.7/site-packages'、 ' / USR /local/lib/python3.7/site-packages/IPython/extensions'、 '/Users/shijianzhong/.ipython']
もちろん、Pythonの内部ipythonの環境は、私はちょうど新しい作業ディレクトリのパスではありませんでした。
CD〜:[7]では /ユーザ/ shijianzhong で[8]:グラフィックスから原始インポート ------------------------------ --------------------------------------------- ModuleNotFoundErrorトレースバック(最新呼び出しの最後) <ipython-入力-8-e5e5ddc40003>で、<モジュール> ----> 1のグラフィックスプリミティブインポートから ModuleNotFoundErrorを:いいえモジュールという名前の'グラフィックス'を
明らかに、この環境が失敗するパッケージを導くために何もパスが存在しないため。そして、パスを追加します。
sys.path.append( '/ユーザ/ shijianzhong /試験/ PythonCookbook / charter_10 / t_10_1_2'):[9]内 で[10]:グラフィックインポートからのプリミティブ で[11]:プリミティブ OUT [11]:<モジュールのグラフィック/ユーザ/ shijianzhong /研究/ PythonCookbook / charter_10 / t_10_1_2 /グラフィックス/プリミティブ/ __ __ INIT「から'.primitive。PY'>
PATH環境変数を追加し、この作業ディレクトリモジュールのすべてが唯一のパッケージにインポートすることができます。
モジュールをインポートすることができますかどうかを試験するために、私はトップレベルのディレクトリ(t.py)で新しいファイルを作成しました:
。 ├──__pycache__ │└──t.cpython-37.pyc ├──グラフィック │├──を__init__.py │├──__pycache__ ││└──__init __。CPythonの-37.pyc │├──形式 ││ __init__.py├── ││├──__pycache__ │││└──__init __。CPythonの-37.pyc ││├──jpg.py ││└──png.py │└──プリミティブ │├── __init__.py │├──__pycache__ ││└──__init __。CPythonの-37.pyc │├──fill.py │├──line.py │└──text.py └──t.py
[4]:インポートトン 私はトンです
インポートモジュールは、直接内部コンテンツを出力した後、モジュールを実行することは記載されています。
ここからは説明することができ、このファイルを実行するとき、一般的には、私の主は、ファイルが最上階に構築する必要があります実行し、そう、Pythonの環境にこのスクリプトの適切な労働条件を追加することが可能です。
(おそらくはパケットエラーの絶対パスをガイド)後、ガイドパケットエラーのいくつかを回避します。
この場合、私は、インポートモジュールには非常に簡単で、トップレベルのパッケージを渡すことができます
これにより、後者は、モジュールをインポートするために、絶対パスを理解するより良いことができます。
我々は輸入にクリップのパッケージを提出するとき、実際には、それは__init__ファイルをインポートされ、各ファイルの内容は、内部で実行されます。
graphics.formatsインポートjpgから
私は、グラフィックスをパッケージ化しています 私は形式パッケージしています
私はグラフィックの下に次の形式JPGモジュールパッケージをパッケージインポートすると、__init__内部のこの2つのパッケージには、すべての実行します。
__init__ファイルだけで簡単にからの相対パスで、モジュール内のパッケージ管理パッケージを介してあなたを得ることができます。インポートXXX
ブロックの同じレベルは、このパッケージの中にインポートされます
このパッケージには、このモジュールのパッケージ名を呼ぶ.XXX後半にインポートすることができます。
モジュールパッケージの使用はPythoncookbookの本は、より詳細に説明し、非常に豊富である、と彼はシンプルなの前にいくつかを読んで、後で使用を追加するのは困難です。