【发布时间】:2020-10-25 19:16:32
【问题描述】:
我有一个结构如下的包:
my_package
|-- src
| |-- __init.py__
| |-- __main.py__
| |-- foo.py
| |-- bar.py
|-- setup.py
我正在尝试在 main.py 中导入 foo 和 bar,但在使用命令 python my_package 执行时会出现 ModuleNotFoundError 来自终端,但使用 my_package 目录中的命令 python -m src 运行良好。我想排除 -m 标志。我在互联网上找到的所有材料都指向两件事
- 将包位置设置为 sys.path。
- 将包位置设置为 PYTHONPATH 变量。
我做了这两件事,但到目前为止没有一个对我有用。
编辑: 正如 cmets 中所建议的,包装器是适合此问题的解决方案。但我无法弄清楚那里有什么逻辑。任何帮助都会有所帮助。
【问题讨论】:
-
为什么你认为可以使用忽略包状态的命令运行 Python 包?
-
@DavisHerring 根据我对您的问题的理解,您问我为什么要从命令中省略 m 标志?它看起来有点凌乱或对用户不友好。
-
但是
python foo有一个含义,而且含义不同。如果您想要一个漂亮/简短的命令行,请将其包装在 shell 脚本中。 -
python foo 不就是用来执行 foo 脚本的吗?而且我知道这可以通过使用别名来完成,但我正在从事的项目有多个贡献者。所以每个人都必须自己做,这看起来很不愉快。
-
非常感谢您的更正。至于你的问题python脚本的答案。
标签: python modulenotfounderror