一个模块可以是 运行 并且来自另一个不是其父文件夹的选项 -m 吗?

Can a module be run with option -m from another folder which is not its parent?

当 运行 连接 Python 模块(在包内)时,我总是使用父文件夹中的选项 -m。

假设我们有以下文件目录:

folder-that-contains-root-project-folder/
    root-project-folder/
        package/
            __init__.py
            module.py
            venv/

我总是运行module.py从文件夹root-project-folder作为python -m package.module 并且有效。

但是我怎么能从folder-that-contains-root-project-folder运行module.py呢?到目前为止我尝试的是 python -m root-project-folder/package.module 但它不起作用。

编辑: 运行ning from folder-that-contains-root-project-folder 时的错误是:

/home/eduardo/Desktop/folder-that-contains-root-project-folder/root-project-folder/venv/bin/python:
Error while finding module specification for
'root-project-folder/package.module' (ModuleNotFoundError: No module
named 'root-project-folder/package')

PD: 我在 Ubuntu

上使用 bash
  1. 您的包中需要 toml 或 setup.py 才能生成 python 包。您可以在这里阅读更多内容:https://packaging.python.org/tutorials/packaging-projects/

  2. 一旦正确构建了包文件夹,就可以运行命令 pip install -e . 从文件夹安装你的包

  3. 您的包裹已准备就绪 imported/deployed

  4. 如何delpoy到PyPi是另一个讨论话题

这里有两种解决方案:

  1. 运行python -m root-project-folder.package.module。基本上,您将 rood-project-folder 视为一个模块并使用 . 来分隔文件夹,而不是像在 Python 代码中那样使用 /

  2. root-project-folder 添加到 PYTHONPATH。现在您将能够像往常一样从计算机上的任何文件夹中 运行 python -m package.module