別のファイルから関数を呼び出しますか?

2013年12月01日に質問されました。  ·  閲覧回数 1.2M回  ·  ソース

user2977230 picture
2013年12月01日

Set_up:プログラムで使用する必要のある関数ごとに.pyファイルがあります。

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

私はもう試した:

from file.py import function(a,b)

しかし、エラーが発生します:

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

この問題を解決するにはどうすればよいですか?

回答

Games Brainiac picture
2013年12月01日
619

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

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

Salvador Dali picture
2013年12月01日
208

まず第一に、 .pyは必要ありません。

ファイルa.pyあり、その中にいくつかの関数がある場合:

def b():
  # Something
  return 1

def c():
  # Something
  return 2

そして、あなたz.pyあなたが書かなければならない

from a import b, c
Pulkit Bansal picture
2017年07月20日
67

これは2つの方法で行うことができます。 1つは、file.pyから必要な特定の関数をインポートすることです。 これを行うには

from file import function

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

import file as fl

次に、を使用してfile.py内の任意の関数を呼び出すことができます

fl.function(a,b)
abanmitra picture
2019年01月31日
49

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

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からさまざまな関数を呼び出したい場合は、次の方法で実行できます。

Example3.pyインポートステートメントを定義します-すべての関数をインポートするためのファイル

from com.my.func.DifferentFunction import *

または、インポートする各関数名を定義します

from com.my.func.DifferentFunction import add, sub, mul

次に、 Example3.py 、実行する関数を呼び出すことができます。

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
Juan Ossa picture
2018年03月16日
42

作業中の同じディレクトリに関数を配置できない、または配置したくない場合は、別のディレクトリから関数を呼び出すこともできます。 これは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
Ricky Boy picture
2018年09月28日
25

同じ機能に出くわしましたが、それを機能させるには以下を実行する必要がありました。

'ModuleNotFoundError:No module names'が表示されている場合は、以下のようにファイル名の前にドット(。)が必要です。

.fileインポート機能から

Nagaraj Simpi picture
2015年05月08日
13

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

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

misterrodger picture
2018年10月25日
13

モジュールの名前を「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()
Weky picture
2019年12月24日
13

.pyファイルの関数(もちろん、別のディレクトリに置くこともできます)は、最初にディレクトリを書き込み、次に.py拡張子のないファイル名を書き込むことで簡単にインポートできます。

from directory_name.file_name import function_name

そして後で使用されます: function_name()

Mahabubuzzaman picture
2018年04月18日
9

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