Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python从导入模块导入模块问题_Python - Fatal编程技术网

Python从导入模块导入模块问题

Python从导入模块导入模块问题,python,Python,我有这样一个项目结构: main.py src\ foo.py bar.py 我正在尝试从main.py导入foo.py # main.py import src.foo # I also tried # from src import foo # or # from src.foo import * # foo.py import bar # also tried # from bar import * 但是foo.py导入bar.py # main.py import sr

我有这样一个项目结构:

main.py
src\
  foo.py
  bar.py
我正在尝试从
main.py
导入
foo.py

# main.py
import src.foo

# I also tried
# from src import foo
# or
# from src.foo import *
# foo.py
import bar

# also tried
# from bar import *
但是
foo.py
导入
bar.py

# main.py
import src.foo

# I also tried
# from src import foo
# or
# from src.foo import *
# foo.py
import bar

# also tried
# from bar import *
但它有modulenofounderror

ModuleNotFoundError: No module named 'bar'
当我在
foo.py
中这样做时,它起作用了:

import src.bar
但我不想每次进口东西时都这么做。为什么导入的模块不能使用自己的父目录?我如何修复它?

您的(正常)选项包括:

import src.bar      # Absolute import

import bar
在Python 3中不起作用,因为它有一些基本问题。想象一棵树像:

spam\
  math.py
  eggs.py
如果
eggs.py
需要内置的
math
模块,并且在Python 2上导入了
math
,那么它不会得到内置的,而是得到
spam.math
。而且它根本没有合理的方法来获取内置的
数学
(除了一个
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
导入,它为您提供了Python 3风格的绝对导入)


是引用同级模块而不显式命名父包的方法。使用它。

这能回答您的问题吗<代码>从。导入条码否。他正在尝试运行模块,我正在尝试导入它。^^我不想每次都这样做。一定有办法直接导入它。我记得我做过。作为一个包,它不应该依赖于导入模块。疯狂的选项包括修改
sys.path
,这样您自己的目录就是其中的一部分;但这不是一个明智的选择,因为它可能导致一个给定的模块被单独导入两次,因为它在
src.bar
bar
下都可见。谢谢。所以基本上你是说我不能那样做。@OneNose:我是说来自。导入条码是正确的,并且执行您要求的操作。其他解决方案一开始很糟糕,然后变得更糟。导入条形图的唯一方法是降级到Python 2,我不推荐使用Python 2,原因有很多,从它在将近一年前结束使用开始。