简单的问题,但找不到答案。 我有以下结构:
./lib1:
main.py
./lib2:
__init__.py utils.py
从根目标开始,我正在运行:
python lib1/main.py
在main.py中我想导入lib2 / utils.py。
添加import lib2 / utils.py失败。 我找到的一个解决方案是添加:
~/tmp/root$ cat lib1/main.py
import sys,os
sys.path.append(os.getcwd())
import lib2.utils
lib2.utils.foo()
这很好,但如果有其他解决方案,我会徘徊。感谢。
答案 0 :(得分:0)
lib1
和lib2
是否有单独的模块?如果是,则@BrenBarn的注释适用:您需要将顶级目录(包含lib1
和lib2
添加到Python路径(例如,使用PYTHONPATH
环境变量或附加到{{1 }})。
如果sys.path
和lib1
都是一个模块的一部分(即顶层目录中有lib2
个文件),您可以使用相对导入(https://docs.python.org/2.5/whatsnew/pep-328.html)。
答案 1 :(得分:0)
您的问题是由使用错误的目录结构引起的。 main.py
脚本应与其需要导入的包位于同一顶级目录中。所以结构应该是这样的:
project /
lib2 /
__init__.py
utils.py
other.py
main.py
main
脚本的目录将始终添加到sys.path
的开头,因此这将保证无论脚本在何处,都可以始终直接导入该目录中的所有包。从。执行。
要将utils
模块导入main.py
(或other.py
),您应该执行以下操作:
from lib2 import utils