我有以下文件夹结构: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/