【发布时间】:2018-11-17 14:19:47
【问题描述】:
我有以下文件夹结构:
-
app__init__.py-
utils__init__.pytransform.py
-
products__init__.pyfish.py
在 fish.py 中,我将 transform 导入如下:import utils.transform。
当我从 Pycharm 运行 fish.py 时,它工作得非常好。但是,当我从终端运行 fish.py 时,我收到错误 ModuleNotFoundError: No module named 'utils'。
我在终端中使用的命令:来自应用文件夹python products/fish.py。
我已经查看了此处建议的解决方案:Importing files from different folder,将应用程序文件夹的路径添加到 sys.path 帮助中。但是我想知道是否有任何其他方法可以在不向fish.py 中添加两行代码的情况下使其工作。这是因为我在 /products 目录中有很多脚本,并且不想在每个脚本中添加 2 行代码。
我查看了一些开源项目,并且看到了许多从并行文件夹导入模块而不向 sys.path 中添加任何内容的示例,例如这里: https://github.com/jakubroztocil/httpie/blob/master/httpie/plugins/builtin.py#L5
如何让它以同样的方式适用于我的项目?
【问题讨论】:
-
通过查看设置来检查你是否在 Pycharm 中使用虚拟环境
-
@NicolòGasparini 我认为在 Pycharm 中使用 virtualnev:在 Project Interpreter 中我选择了 /application/venv/bin/python。我也在终端中使用相同的 virtualnev...
-
你能显示你的
__init__.py文件在哪里吗? -
还展示了如何从命令行运行模块。我猜 PyCharm 在设置路径方面非常聪明。
-
看看这个stackoverflow.com/questions/1054271/…,它应该可以满足您的需求,但是从长远来看,如果您的 utils 文件夹增长,您可能需要确保它位于路径中,这样您就不必做相对进口。不过你可能会遇到这种情况:stackoverflow.com/questions/30669474/…
标签: python python-3.x pycharm