python - 在另一个目录中导入脚本时出现导入错误
问题描述
在下面的目录结构中,我想运行dir_b中的代码,python run.py。
dir_a
|- func_f.py
|- func_g.py
dir_b
|- run.py
func_f.py 的脚本是:
def f(x):
return x**2
func_g.py 的脚本是:
from func_f import f
def g(x):
return f(x) + 2
run.py 的脚本是:
import sys
sys.path.append('../')
from dir_a import func_g
y = func_g.g(3)
print(y)
在 dir_b 的目录中,我运行“python run.py”;但是,错误发生如下:
Traceback (most recent call last):
File "run.py", line 3, in <module>
from dir_a import func_g
File "../dir_a/func_g.py", line 1, in <module>
from func_f import f
ModuleNotFoundError: No module named 'func_f'
我写了“from dir_a import func_g”,但为什么会出现这个错误?我怎么解决这个问题?
解决方案
成为func_g.py
:
if __name__ == '__main__':
from func_f import f
else:
import sys
sys.path.append('../')
from func_f import f
def g(x):
return f(x) + 2
推荐阅读
- rest - 从 Postman 基本身份验证构造 URL
- angular - IIS 将同一 IIS 上相同域名的 HTTP 重定向到 HTTPS
- python - 使用 forloops 生成数据帧
- unity3d - 我怎样才能从这个对象获得参考?
- python - 错误消息:ValueError:在 NLTK 的频率分布中解包的值太多
- reactjs - NextJs 动态站点地图为什么会出现 504 错误?
- angular - Webpack 自定义加载器似乎不起作用(对于 haml-haml-loader)
- amazon-web-services - 使运行在 ECS 中的应用程序在 https 上可供全世界访问
- python - 如何根据像素 alpha 值使用 numpy.where?
- f# - 如何将 C# XAML 中的 F# 模块用于 DataTemplates 和 DataContext?