2015-06-30 3 views
-1

Я написал класс в своем .py файле, и я хочу иметь возможность использовать его в других файлах. Я сохранил файл panel.py в C:\Python27\Lib, а затем я попытался использовать import panel в ipython, и я получил следующую ошибку: ImportError: No module named panel. Я думал, что, возможно, сохранил класс в неправильном каталоге, поэтому я попытался сохранить файл здесь C:\Python27, который также не работал, когда я пытался импортировать файл. Что я делаю не так? Если это полезно, вот класс, который я написал, я удалил все, что делает класс, который не должен влиять на что-либо.Как импортировать модуль в Python?

import statsmodels.formula.api as sm 
import pandas as pd 
import numpy as np 
import scipy as sp 
from math import sqrt 
import re 


class PanelModel: 


    def __init__(self, formula, effects = "random", time_fe = False, entity_fe = False, robust = False, data = None): 
     pass 

    def balanceChecker(self): 
     pass 

    def fit(self): 
     pass 

    def randomEffects(self): 
     pass 

    def fixedEffects(self): 
     pass 

    def betasREBalanced(self): 
     pass 

    def summary(self): 
     pass 

Я бегу питон 2.7.9 и 3.0.0 IPython

+1

Возможный дубликат [Импорт модуля из относительного пути] (http://stackoverflow.com/questions/279237/import-a-module-from-a-relative-path) –

+2

Вы можете распечатать это и обновить вопрос - 'import sys; print (sys.path) ' –

+0

Если этот класс находится в другой папке, вам нужно добавить файл к вашему PYTHONPATH, и я думаю, вам нужен файл' __init __. py' – rady

ответ

0

из https://docs.python.org/2/tutorial/modules.html

Когда модуль с именем спам импортируется, интерпретатор сначала ищет встроенный модуль с тем, что имя. Если он не найден, он ищет файл с именем spam.py в списке каталогов, заданных переменной sys.path. sys.path инициализируется из этих мест:

  • Список каталогов, содержащих входной скрипт (или текущий каталог). PYTHONPATH (список имен каталогов, с тем же синтаксисом, что и переменная оболочки PATH).

  • Укажите каталог, содержащий входной скрипт (или текущий каталог). PYTHONPATH (список имен каталогов, с тем же синтаксисом, что и переменная оболочки PATH).

  • Укажите значение по умолчанию, зависящее от установки.

После инициализации программы Python могут изменять sys.path. Каталог, содержащий выполняемый скрипт, помещается в начало пути поиска, опережая стандартный путь к библиотеке. Это означает, что скрипты в этом каталоге будут загружены вместо модулей с тем же именем в каталоге библиотеки. Это ошибка, если не требуется замена. Дополнительную информацию см. В разделе «Стандартные модули».

0

Я предполагаю, что вы ищете динамическое импортирование.

Попробуйте это. Посмотрите, работает ли он

importlib.import_module(moduleName) 
0

Самое простое решение - убедиться, что вы находитесь в том же каталоге, что и модуль, который вы написали. Введите ls из подсказки ipython и посмотрите, включен ли panel.py.

Другие возможные решения двигая модуль где-то в списке sys.path или прилагая путь к модулю для sys.path

0

Спасибо всем за оперативную и очень полезные советы. Я выбрал import sys, а затем print sys.path и сохранил мой файл в одном из этих каталогов, что потребовало сохранения папки AppData.

Смежные вопросы