web-dev-qa-db-ja.com

Pythonの他のファイルから関数を呼び出す

Set_up:プログラムで使用する必要がある各機能用の.pyファイルがあります。

このプログラムでは、外部ファイルから関数を呼び出す必要があります。

私はもう試した:

from file.py import function(a,b)

しかし、私はエラーが出ます:

ImportError: 'file.py'という名前のモジュールはありません。ファイルはパッケージではありません

どうすればこの問題を解決できますか?

300
user2977230

インポート中にfile.pyを追加する必要はありません。 from file import functionを書いてからfunction(a, b)を使って関数を呼び出すだけです。これがうまくいかないのは、fileがPythonのコアモジュールの1つなので、ファイルの名前を変更することをお勧めします。

a.pyからb.pyという名前のファイルに関数をインポートしようとしている場合は、a.pyb.pyが同じディレクトリにあることを確認する必要があります。

361
Games Brainiac

まず第一にあなたは.pyを必要としません。

a.pyというファイルがあり、その中にいくつかの機能がある場合

def b():
  # Something
  return 1

def c():
  # Something
  return 2

そして、あなたはそれらをz.pyにインポートしたいのです。

from a import b, c
130
Salvador Dali

これには2つの方法があります。まず始めにfile.pyから必要な特定の関数をインポートするだけです。これを行うには

from file import function

別の方法はファイル全体をインポートすることです

import file as fl

それから、あなたはfile.pyの中でどんな関数でも呼び出すことができます

fl.function(a,b)
28
Pulkit Bansal

まずファイルを.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()

===========================

9
Nagaraj Simpi

同じ機能に遭遇したが、私はそれを機能させるために以下をしなければならなかった。 

'ModuleNotFoundError:No module named'と表示されている場合は、おそらくファイル名の前にドット(。)が必要です。

.file import機能から

8
Ricky Boy

自分が作業しているのと同じディレクトリに関数を置くことができない、または望まない場合は、別のディレクトリから関数を呼び出すこともできます。あなたはこれを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
7
Juan Ossa

file.pyを追加する必要はありません。

インポートする場所のファイルと同じ場所にファイルを保存するだけです。それからちょうどあなたの機能を輸入しなさい:

from file import a, b
5
Mohan

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

4
Mahabubuzzaman

モジュールの名前を '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()
2
misterrodger

インポートしようとしているPythonファイルと同じ場所にファイルがあるはずです。 「ファイルインポート機能から」でも十分です。

2
Girish M

私の場合、私は自分のファイルをhelper.scrap.pyと命名し、helper.pyに変更するまでそれを機能させることができません 

1
bresleveloper

ファイルが別のパッケージ構造にあり、別のパッケージからそれを呼び出したい場合は、その方法で呼び出すことができます。

あなたのpythonプロジェクトに次のようなパッケージ構造があるとしましょう。

Python package and file structure

- 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
0
abanmitra

呼び出したいファイルがanotherfile.pyで、呼び出したいメソッドがmethod1であるとします。次に、まずファイルをインポートし、次にそのメソッドを

from anotherfile import method1

method1がクラスの一部である場合は、そのクラスをclass1とします。 

from anotherfile import class1

次に、class1のオブジェクトを作成します。オブジェクト名がob1であるとします。

ob1 = class1()
ob1.method1()
0

コードを実行しているディレクトリと同じディレクトリにあるこのファイルをインポートする場合は、ファイル名の前にドット(。)を追加します。

たとえば、a.pyという名前のファイルを実行していて、b.pyで記述されたaddFunという名前のメソッドをインポートしたいのですが、b.pyは同じディレクトリにあります

from .b import addFun

0
Shravan Kumar