Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.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_Import_Path_Pythonpath - Fatal编程技术网

如何从同级目录导入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”)这是在整个页面上唯一有效的方法。