Skip to main content
 首页 » 编程设计

python之在具有来自另一个目录的相对导入的模块上运行 Python

2025年05月04日11tintown

假设在 /path/to/foo 下我有一个带有 python 模块的包:

/path/to/foo: 
           | my_package 
                        | __init__.py 
                        | my_module.py 
 
           | my_other_package 
                        | __init__.py 
                        | my_other_module.py 

文件 my_module.py 对 my_other_module.py 进行相对导入,如下所示:

  from ..my_other_package import my_other_module 

我知道我可以从 shell 执行以下操作:

> cd /path/to/foo 
> python -m my_package.my_module 

但是如果我不想更改当前目录怎么办?有什么方法可以从 shell 运行我的模块而无需更改 PYTHONPATH?

我尝试了以下方法:

python -m /path/to/foo/my_package.my_module 

但这没有用。我得到:不支持按文件名导入。

请您参考如下方法:

获取相对路径:

base_path = os.path.abspath('../my_other_package/') #or any relative directory

将其附加到系统路径(只是临时的,执行后将被删除): sys.path.append(base_path)

在该路径中导入您需要的文件: 导入 my_other_module.py

我相信你可能需要一个名为 __init__.py 的文件(里面什么都没有)如果你想将文件导入为 import directory.file如果我错了)。

This线程显示了替代方法。