假设在 /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线程显示了替代方法。
