2013-12-01 5 views
183

Set_up: У меня есть .py-файл для каждой функции, которую мне нужно использовать в программе.Вызвать функцию из другого файла в Python

В этой программе мне нужно вызвать функцию из внешних файлов.

Я пробовал:

from file.py import function(a,b) 

Но я получаю ошибку:

ImportError: No module named 'file.py'; file is not a package

Как исправить эту проблему?

+26

'из файла импорт функция'. Нет необходимости в расширениях файлов или функциональных параметрах. – samrap

+3

В учебнике Python вам следует пройти через раздел [modules] (http://docs.python.org/2/tutorial/modules.html). –

+0

Просто убедитесь, что, используя PyCharms, тогда он будет распознавать только имя символа подчёркивания. – Jerry

ответ

227

При импорте не нужно добавлять file.py. Просто напишите from file import function, а затем вызовите функцию, используя function(a, b). Причина, по которой это может не работать, заключается в том, что file является одним из основных модулей Python, поэтому я предлагаю вам изменить имя вашего файла.

Обратите внимание, что если вы пытаетесь импортировать функции из a.py в файл с именем b.py, вам нужно будет убедиться, что a.py и b.py находятся в том же каталоге.

+0

«Файл» был просто заполнителем вопроса, который я задаю, а не фактическим именем файла. Однако, спасибо. Я попробую это и вернусь к вам. – user2977230

+3

Я пробовал это, но он по-прежнему показывает ошибку: имеет ли он какое-либо отношение к Python 3 или является общей проблемой? – DarkRose

+1

@GamesBrainiac, что делать, если файл, который вы хотите импортировать из функции, находится в другом каталоге? Могу ли я включить путь к файлу, предшествующий имени файла, или есть что-то более сложное? – Tom

75

Прежде всего, вам не нужен .py.

Если у вас есть файл a.py и внутри у вас есть какие-то функции:

def b(): 
    # Something 
    return 1 

def c(): 
    # Something 
    return 2 

И вы хотите, чтобы импортировать их в z.py вы должны написать

from a import b, c 
+22

вы также можете импортировать * –

+1

@DimitarMarinov С * заменено на имя файла? – Karlo

+3

@Karlo, нет, просто * –

4

Сначала сохраните файл в .py формате (например, my_example.py). И если этот файл есть функции,

def xyz(): 

     -------- 

     -------- 

def abc(): 

     -------- 

     -------- 

В вызывающей функции вы просто должны ввести следующие строки.

имя_файла: my_example2.py

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

import my_example.py 


a = my_example.xyz() 

b = my_example.abc() 

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

+2

Я не знаю, относится ли моя ошибка к версиям python. То, что я делаю, выбирает этот пример: 'import fn' (без расширения) и использовать их непосредственно в основном файле' fn.my_funcion() '. Когда я использую 'import fn.py', пытается загрузить файл py.py, которого не существует. Использование 'from fn.py import funcname' тоже не работало. Спасибо. – erm3nda

2

У вас должен быть файл в том же месте, что и файлы Python, которые вы пытаетесь импортировать , Также достаточно «из функции импорта файлов».

4

Нет необходимости добавлять file.py.

Просто сохраните файл в том же месте с файлом, из которого вы хотите его импортировать. Просто вставьте ваши функции:

from file import a, b 
+0

О, конечно, нет. Я не хотел набирать .py Это опечатка – Mohan

13

Вы можете сделать это двумя способами. Сначала нужно просто импортировать определенную функцию из файла .py.Для этого используйте

from file import function 

Другой способ заключается в импортировать весь файл целиком

import file as fl 

Тогда вы можете вызвать любую функцию внутри file.py с помощью

fl.function(a,b) 
1

Предположим, файл, который вы хотите call is anotherfile.py и метод, который вы хотите вызвать, это метод1, затем сначала импортируйте файл, а затем метод

from anotherfile import method1 

если method1 является частью класса, пусть класс будет class1, то

from anotherfile import class1 

затем создать объект class1, предположим, что имя объекта ob1, то

ob1 = class1() 
ob1.method1() 
Смежные вопросы