我已经在自己的.py文件中编写了一个类,我希望能够在其他文件中使用它。我在panel.py
中保存了文件C:\Python27\Lib
,然后我尝试在ipython中使用import panel
,我收到了以下错误ImportError: No module named panel
。我以为我可能已将该类保存在错误的目录中,因此我尝试将文件保存在C:\Python27
,这在我尝试导入文件时也无效。我究竟做错了什么?如果它在我编写的类中有用,我删除了该类所做的所有不应影响任何内容的内容。
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
我正在运行python 2.7.9和ipython 3.0.0
答案 0 :(得分:0)
来自https://docs.python.org/2/tutorial/modules.html
当导入名为spam的模块时,解释器首先搜索具有该名称的内置模块。如果未找到,则会在变量sys.path给出的目录列表中搜索名为spam.py的文件。 sys.path从这些位置初始化:
列出包含输入脚本(或当前目录)的目录。 PYTHONPATH(目录名列表,语法与shell变量PATH相同)。
列出包含输入脚本(或当前目录)的目录。 PYTHONPATH(目录名列表,语法与shell变量PATH相同)。
初始化后,Python程序可以修改sys.path。包含正在运行的脚本的目录位于搜索路径的开头,位于标准库路径之前。这意味着将加载该目录中的脚本,而不是库目录中的同名模块。除非有意更换,否则这是一个错误。有关详细信息,请参阅标准模块一节。
答案 1 :(得分:0)
我猜你正在寻找的是动态导入。
试试这个。看看它是否有效
importlib.import_module(moduleName)
答案 2 :(得分:0)
最简单的解决方案是确保您与所编写的模块位于同一目录中。从ipython提示符中键入ls
,查看是否列出了panel.py
。
其他可能的解决方案是将您的模块移到sys.path
中列出的位置或将模块的路径追加到sys.path
答案 3 :(得分:0)
谢谢大家的快速和非常有用的建议。我选择import sys
然后选择print sys.path
并将我的文件保存在其中一个目录中,这些目录需要取消隐藏我的AppData文件夹。