自分で書いたPythonインポートpyファイル
I. 実現したい効果
自分でコーディングしたモジュールを一元管理するためのフォルダを新規に作成する
サードパーティライブラリをインポートするのと同じように、自分でコーディングしたモジュールを他のpyファイルの中でインポートすることができます。
II. 実装方法
ステップ1:番号付けされたモジュール*.pyをフォルダに入れる、私のコンピュータではそうなっている。F:\OneDrivePythonPrj_myFunction
ステップ2:新しいユーザー/システム環境変数を作成します。
変数名:PYTHONPATH
変数名:フォルダーパス
そうすれば、目的の効果を得ることができます。以下の3つのインポート方法は、すべて利用可能です。
この根拠は、Pythonインタプリタがインポートするモジュールを探すために、次の3つの場所に移動するためです。
- 現在のファイルがあるディレクトリ
- 環境変数PYTHONPATHで指定されたディレクトリ
- Pythonのデフォルトインストールディレクトリ
Pythonのsys.path変数には、以下のようにインタプリタ・インポート可能なモジュールの位置が記録されています。
そこで、以下のコードで sys.path 変数を操作することで、インタープリタにモジュールのありかを伝えることができます。
sys.path はリストですが、ここでは append でパスを追加し、このパス a 以下のモジュールが正常にインポートされるようにしています。この方法はコードが2行余分にあり、不便なので、一時的に使用するのに適しています。
III. 高度な使用法
セルフコードモジュールが増えてきたり、セルフコードモジュールに説明書きを追加したい場合も、管理やメンテナンスがしやすいように、各セルフコードモジュールを別々のフォルダに格納したいものです。こんな感じで。
そして、自分でコーディングしたモジュールをフォルダに格納します(例:myPackage1)。
この時点で、次のように書いてモジュールをインポートしたい。
これは第1階層のサブフォルダの書き方で、それ以上の階層のフォルダはずっと(.)をクリックすると下に降りていくことができます。もちろん、通常使うのは第1階層のサブフォルダーだけで、第2階層はほとんど使いません。
IV. を使う イニット _.py は、フォルダーがインポートされたときに実行されるアクションを制御します。
もし、フォルダ内のすべてのモジュールのインポートを、ドットでひとつひとつクリックすることなく、一度に制御したい場合は、 を使用する必要があります。 イニット _.py ファイルを参照してください。
このファイルは、下図のようにモジュールと同じディレクトリにある必要があり、Pythonは、。 イニット _.py ファイルがあるフォルダをパッケージと呼びます。
myPackage1 をインポートするたびに、_. イニット .py が自動的に一度だけ実行されるので、パッケージ初期化ファイルとも呼ばれます。この機能を利用して、このファイルにいくつかのコードを書き、myPackage1 フォルダをインポートする際の動作を制御することができます。この初期化ファイルをこのように書きます。
import sys# Add the directory where the __init__.py file is located to the Python search directory, otherwise it will prompt that myModule1 cannot be found sys.path.append(__file__[:-12]) import myModule1
次に、他の py ファイルで myPackage1 をインポートします。 イニット _.py ファイルが自動的に実行されるので、myModule1 ファイルが自動的にインポートされます。それを確認します。
もちろん、パッケージ初期化ファイルにimportと書いても、import myPackage1.myModuleのようにモジュールをインポートすることは可能です。パッケージ初期化ファイルは、本来のimportメソッドには何の影響も及ぼさないのです。
また、次のように、パッケージ内のモジュールで定義された関数やプロパティを1つずつインポートすることもできます_。 イニット _.py ファイルをご覧ください。
import sys
# Add the __init__.py file to the Python search directory, otherwise myModule1 will not be found
sys.path.append(__file__[:-12])
import myModule1
そして、他の py ファイルがインポートされたら、次のように記述します。
このように、myModule1で定義された関数を直接利用することができます。
まとめると、importモジュールの書き方は、__と同じです。 イニット _.py の書き方は一貫している必要があります。つまり、両方がパッケージ名をインポートするか、両方がパッケージ名から * をインポートするかで、望ましい効果を得ることができます。
私はPythonを十分に理解していないので、私が理解したいくつかのパターンを共有することはできません。
概要
Pythonで書かれたpyファイルをインポートする方法については、この記事がすべてです。Pythonで書かれたpyファイルのインポートについては、スクリプトハウスの過去記事を検索するか、引き続き以下の関連記事を参照してください。
関連
-
[解決済み】NameError: name 'requests' is not defined [クローズド].
-
[解決済み] Pythonで関数を繰り返す
-
[解決済み] tf.compat.v1.train.exponential_decay: グローバルステップ = 0
-
[解決済み] IDLEで行番号をオンにするには?
-
[解決済み] Python 3でexecfileの代替?[重複]です。
-
[解決済み] Python - AttributeError: 'NoneType' オブジェクトには 'findAll' という属性がありません。
-
[解決済み] sqlite3.OperationalError: 認識できないトークン:"01T00" Python datestamp
-
[解決済み] Python - % でサポートされていないオペランド型: 'list' および 'int' です。
-
[解決済み] AttributeError: 'list' オブジェクトには 'copy' という属性がありません。
-
Pyinstaller を使って Python プログラムをパッケージングしてみる 発生した問題のまとめ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python Decorator 練習問題
-
[解決済み】Python TypeError: データフレームで計算しようとすると、系列を<クラス 'int'>に変換できない。
-
[解決済み] pandasで1つの列を除くすべての列を選択する方法は?
-
[解決済み] Tensorflowのnext_batchを自分のデータに対して実装する方法
-
[解決済み] statsmodel AttributeError: モジュール 'scipy.stats' には 'chisqprob' という属性がありません。
-
[解決済み] sys.argv[1], IndexError: list index out of range [duplicate].
-
[解決済み] 任意のデータを使って matplotlib で 4d プロットを作成する方法
-
[解決済み] "import pandas.io.data as web " と入力すると、pandas.io.data のモジュール名がないというエラーが表示されます。
-
[解決済み] Pythonエラー "import: unable to open X server".
-
[解決済み] Pythonでvirtualenvの名前を変更する方法は?