我有以下文件夹结构:
app
__init__.py
utils
__init__.py
transform.py
products
__init__.py
fish.py
在fish.py中,我导入transform如下:import utils.transform
当我从Pycharm运行fish.py时,它工作得非常好。但是,当我从终端运行fish.py时,我会得到错误。
我在终端中使用的命令:来自app folderModuleNotFoundError: No module named 'utils'
我已经研究过这里建议的解决方案:Importing files from different folder,将应用程序文件夹的路径添加到python products/fish.py帮助中。不过,我想知道是否还有其他方法可以使它在不向sys.path中添加两行代码的情况下工作。这是因为我在/products目录中有许多脚本,不想在每个脚本中添加2行代码。
我研究了一些开放源代码项目,我看到了许多从并行文件夹导入模块而不向sys.path中添加任何内容的示例,例如:
https://github.com/jakubroztocil/httpie/blob/master/httpie/plugins/builtin.py#L5
如何使它以同样的方式为我的项目工作?

最佳答案

您可能想运行python -m products.fish。这与python products/fish.py之间的区别在于前者大致相当于在shell中执行import products.fish(但将__name__设置为__main__),而后者不知道其在包层次结构中的位置。

关于python - 从Terminal运行脚本时的ModuleNotFoundError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50745094/

10-12 20:26