繁体   English   中英

在具有从另一个目录的相对导入的模块上运行Python

[英]Running Python on a module with relative imports from another directory

假设在/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

但是,如果我不想更改当前目录怎么办? 有什么方法可以从外壳运行我的模块而不必更改PYTHONPATH吗?

我尝试了以下方法:

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

但这没用。 我得到: Import by filename is not supported

获取相对路径:

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

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

导入该路径中所需的文件: import my_other_module.py

我相信如果您要将文件import directory.fileimport directory.file (如果我输入错了,请更正),可能需要一个名为__init__.py的文件(其中没有任何内容)。

线程显示了替代方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM