2

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

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

4

1 回答 1

1

获取相对路径:

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

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

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

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

线程显示了替代方法。

于 2013-07-22T23:04:26.857 回答