Pycharm ModuleNotFoundError: No module named // python import from child directory fails

Pycharm ModuleNotFoundError: No module named // python import from child directory fails

我遇到过很多类似的问题和文章,尝试过很多不同的方法,但仍然找不到问题所在。

我在 pycharm 中创建了一个新项目并将其设置为根目录。然后在根级别创建一个脚本,其中包含我想在子目录脚本中导入的一些变量。

这是 unix tree 命令的结果:

root_project  
├── subfolder  
│   └── sub_script.py  
└── variables_i_need.py  

variables_i_need.py的内容就是name = "john"

sub_script.py的内容是

from variables_i_need import name

if __name__ == "__main__":
    print(name)

现在,当我 运行 sub_script.py 使用 sub_script 的 播放按钮时,它可以工作并且 运行 控制台打印:

/usr/bin/python3.8 /home/root_project/subfolder/sub_script.py
john

Process finished with exit code 0

但是当我尝试从命令行 运行 它时它中断了:

python3 sub_script.py

~/Desktop/root_project/subfolder » python3 sub_script.py                                                                                      gabri@gabriele-computer
Traceback (most recent call last):
  File "sub_script.py", line 1, in <module>
    from variables_i_need import name
ModuleNotFoundError: No module named 'variables_i_need'

如果您查看 PyCharm 配置,有两个选项:

  1. 将内容根添加到 PYTHONPATH
  2. 将源代码添加到 PYTHONPATH

它们被默认标记。

在您的情况下,第一个允许您正确地 运行 脚本,因为它在 PYTHONPATH 环境变量中添加了 root_project 路径。

因此,如果您还想在命令行中 运行 脚本,您应该设置相同的变量。
您可以这样进行:

  1. 打开命令行

  2. 如果你在Linux你可以使用

    export PYTHONPATH=

  3. 如果你在 Windows 你可以使用

    SET PYTHONPATH=

  4. 运行 脚本

    ~/Desktop/root_project/subfolder » python3 sub_script.py

请记住export/set命令不是永久的,它对当前命令行会话有效。