如何从同级目录导入Python脚本?
以下是目录结构:如何从同级目录导入Python脚本?,python,import,path,pythonpath,Python,Import,Path,Pythonpath,以下是目录结构: parent_dir/ foo_dir/ foo.py bar_dir/ bar.py 如何将bar.py导入foo.py?如果所有出现的目录都是Python包,即它们都包含\uuuu init\uuuu.py,那么您可以使用 from ..bar_dir import bar 如果目录不是Python包,您可以通过使用sys.path来实现这一点,但您不应该这样做。您可以使用sys和os模块进行通用导入。在foo.py中,以
parent_dir/
foo_dir/
foo.py
bar_dir/
bar.py
如何将bar.py导入foo.py?如果所有出现的目录都是Python包,即它们都包含
\uuuu init\uuuu.py
,那么您可以使用
from ..bar_dir import bar
如果目录不是Python包,您可以通过使用
sys.path
来实现这一点,但您不应该这样做。您可以使用sys
和os
模块进行通用导入。在foo.py
中,以行开始
import sys
import os
sys.path.append(os.path.abspath('../bar_dir'))
import bar
请参阅:如果您想在非包中导入,并且只从同级运行python,那么这将不起作用。在本例中,sys.path.append是go@mhstnsc我想说,在这种情况下,您做了一些错误的事情,但如果它只是一些黑客脚本,那么可以随意使用
sys.path
。这没有错,但在运行主模块时,您无法进行相对导入。当我在上面运行ipython foo.py
时,我得到了ImportError:在没有已知父包的情况下尝试了相对导入
。我已经将一个\uuuu init\uuuu.py
文件添加到父目录和bar\u目录
directory@ogogmad,你找到解决办法了吗?感谢您注意,这将使用cwd的同级目录,而不是foo.py
所在的同级目录。要使用脚本的目录,请使用sys.path.append(os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(u文件_u)),“…”,“bar”)这是在整个页面上唯一有效的方法。