Set_up:プログラムで使用する必要がある各機能用の.pyファイルがあります。
このプログラムでは、外部ファイルから関数を呼び出す必要があります。
私はもう試した:
from file.py import function(a,b)
しかし、私はエラーが出ます:
ImportError: 'file.py'という名前のモジュールはありません。ファイルはパッケージではありません
どうすればこの問題を解決できますか?
インポート中にfile.py
を追加する必要はありません。 from file import function
を書いてからfunction(a, b)
を使って関数を呼び出すだけです。これがうまくいかないのは、file
がPythonのコアモジュールの1つなので、ファイルの名前を変更することをお勧めします。
a.py
からb.py
という名前のファイルに関数をインポートしようとしている場合は、a.py
とb.py
が同じディレクトリにあることを確認する必要があります。
まず第一にあなたは.py
を必要としません。
a.py
というファイルがあり、その中にいくつかの機能がある場合
def b():
# Something
return 1
def c():
# Something
return 2
そして、あなたはそれらをz.py
にインポートしたいのです。
from a import b, c
これには2つの方法があります。まず始めにfile.pyから必要な特定の関数をインポートするだけです。これを行うには
from file import function
別の方法はファイル全体をインポートすることです
import file as fl
それから、あなたはfile.pyの中でどんな関数でも呼び出すことができます
fl.function(a,b)
まずファイルを.py形式で保存します(たとえば、my_example.py
)。
def xyz():
--------
--------
def abc():
--------
--------
呼び出し元の関数では、以下の行を入力するだけです。
file_name:my_example2.py
===========================
import my_example.py
a = my_example.xyz()
b = my_example.abc()
===========================
同じ機能に遭遇したが、私はそれを機能させるために以下をしなければならなかった。
'ModuleNotFoundError:No module named'と表示されている場合は、おそらくファイル名の前にドット(。)が必要です。
.file import機能から
自分が作業しているのと同じディレクトリに関数を置くことができない、または望まない場合は、別のディレクトリから関数を呼び出すこともできます。あなたはこれを2つの方法で行うことができます(おそらくもっと多くの選択肢がありますが、これらは私のために働いたものです)。
代替案1 作業ディレクトリを一時的に変更する
import os
os.chdir("**Put here the directory where you have the file with your function**")
from file import function
os.chdir("**Put here the directory where you were working**")
選択肢2 自分の機能があるディレクトリをsys.pathに追加します。
import sys
sys.path.append("**Put here the directory where you have the file with your function**")
from file import function
file.py
を追加する必要はありません。
インポートする場所のファイルと同じ場所にファイルを保存するだけです。それからちょうどあなたの機能を輸入しなさい:
from file import a, b
MathMethod.Pyの中です。
def Add(a,b):
return a+b
def subtract(a,b):
return a-b
インサイドMain.Py
import MathMethod as MM
print(MM.Add(200,1000))
出力:1200
モジュールの名前を 'file'以外に変更します。
それからまたあなたがその関数を呼んでいる時には:
1)モジュール全体をインポートしている場合は、呼び出すときにモジュール名を繰り返します。
import module
module.function_name()
または
import pizza
pizza.pizza_function()
2)または特定の関数、別名を持つ関数、または*を使用しているすべての関数をインポートする場合は、モジュール名を繰り返しません。
from pizza import pizza_function
pizza_function()
または
from pizza import pizza_function as pf
pf()
または
from pizza import *
pizza_function()
インポートしようとしているPythonファイルと同じ場所にファイルがあるはずです。 「ファイルインポート機能から」でも十分です。
私の場合、私は自分のファイルをhelper.scrap.py
と命名し、helper.py
に変更するまでそれを機能させることができません
ファイルが別のパッケージ構造にあり、別のパッケージからそれを呼び出したい場合は、その方法で呼び出すことができます。
あなたのpythonプロジェクトに次のようなパッケージ構造があるとしましょう。
- com.my.func.DifferentFunction
pythonファイルには、次のような関数があります。
def add(arg1, arg2):
return arg1 + arg2
def sub(arg1, arg2) :
return arg1 - arg2
def mul(arg1, arg2) :
return arg1 * arg2
そして、あなたはExample3.py
から別の関数を呼び出したい、それからあなたはそれをすることができる方法に従って:
ImportステートメントをExample3.py
- import all関数のファイルに定義します
from com.my.func.DifferentFunction import *
またはインポートしたい各関数名を定義します。
from com.my.func.DifferentFunction import add, sub, mul
それからExample3.py
でexecuteのためにfunctionを呼び出せます:
num1 = 20
num2 = 10
print("\n add : ", add(num1,num2))
print("\n sub : ", sub(num1,num2))
print("\n mul : ", mul(num1,num2))
出力:
add : 30
sub : 10
mul : 200
呼び出したいファイルがanotherfile.pyで、呼び出したいメソッドがmethod1であるとします。次に、まずファイルをインポートし、次にそのメソッドを
from anotherfile import method1
method1がクラスの一部である場合は、そのクラスをclass1とします。
from anotherfile import class1
次に、class1のオブジェクトを作成します。オブジェクト名がob1であるとします。
ob1 = class1()
ob1.method1()
コードを実行しているディレクトリと同じディレクトリにあるこのファイルをインポートする場合は、ファイル名の前にドット(。)を追加します。
たとえば、a.pyという名前のファイルを実行していて、b.pyで記述されたaddFunという名前のメソッドをインポートしたいのですが、b.pyは同じディレクトリにあります
from .b import addFun