我正在尝试导入模块,并且我一直收到ImportError。
在PortfolioStatus.py文件中,我有以下代码从share_data.py模块导入share_data类
from Shares.share_data import share_data
我收到以下错误:
File "/home/lucasamos/FYP/Shares/Communication/PortfolioStatus.py", line 3, in <module>
from Shares.share_data import share_data
ImportError: No module named Shares.share_data
为了让事情更加混乱,这在我的本地机器上工作正常,但我在PythonAnywhere上托管,这是我收到错误的地方
我的文件层次结构显示在下面的图片中
提前致谢!
答案 0 :(得分:9)
你应该试试这个:
import sys
sys.path.append("../Shares/templates")
import share_data
它将您的templates文件夹添加到路径列表中,python正在检查模块。
答案 1 :(得分:6)
好的,所以我终于解决了。 正如一些答案所示,我需要将我的根文件夹添加到系统路径。
最后这就是我所做的:
import sys
sys.path.append("/home/lucasamos/FYP")
答案 2 :(得分:2)
使用__init__.py
文件在一个级别添加空manage.py
。
包含__init__.py
文件表明Python解释器应该将该目录视为Python包。
答案 3 :(得分:0)
这可能是因为您的共享目录不在您的PYTHONPATH中。
请参阅有关使用PYTHONPATH的文章: https://users-cs.au.dk/chili/PBI/pythonpath.html
摘录:
但是,通常需要导入一个与主程序不在同一目录中的模块。继续上面的例子,假设您正在编写位于〜/ PBI /中的程序,该程序需要包含mymodule.py。
为了让Python解释器找到你的模块,你需要告诉它在哪里看。您可以通过设置环境变量PYTHONPATH来实现。根据您使用的shell程序(例如,xterm),这可以通过两种方式之一完成。
击:
export PYTHONPATH = $ {PYTHONPATH}:/ users / [您的用户名] / PBI / Modules /
答案 4 :(得分:-1)
一个模块是带有python代码的文件。因此,如果您的目录结构如下所示
/dir
|- a.py
|- b.py
|- __init__.py
,如果要将b.py代码导入a.py。然后使用以下导入。
file b.py
-------------------
def sayHi():
print ('hi)
file a.py
------------------------
from dir.b import sayHi
def wish():
sayHi()