假设在/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
。
答案 0 :(得分: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
(如果我错了,请纠正我)。
This主题显示了替代方法。