我正在尝试导入模块,但不断收到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上,这是我收到错误的地方
我的文件层次结构如下图所示
提前感谢!
您应该尝试以下方法:
import sys
sys.path.append("../Shares/templates")
import share_data
将您的模板文件夹添加到python正在检查模块的路径列表中。
好,所以我终于解决了。如一些答案所示,我需要将我的根文件夹添加到系统路径。
最后这就是我所做的:
import sys
sys.path.append("/home/lucasamos/FYP")
使用__init__.py
文件在一级添加空的manage.py
。
__init__.py
文件的此类包含向Python解释器指示该目录应被视为Python包。
这很可能是因为您的Shares目录不在您的PYTHONPATH中。
请参阅有关使用PYTHONPATH的本文:https://users-cs.au.dk/chili/PBI/pythonpath.html
摘录:
但是,通常,您需要导入与主程序不在同一目录中的模块。继续上面的示例,假定您正在编写〜/ PBI /中的程序,该程序需要包含mymodule.py。
为了让Python解释器找到您的模块,您需要告诉它在哪里看。您可以通过设置环境变量PYTHONPATH来实现。根据您使用的Shell程序(例如xterm),可以通过以下两种方式之一来完成此操作。
重击:
导出PYTHONPATH = $ {PYTHONPATH}:/用户/ [您的用户名] / PBI /模块/
一个模块是带有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()