我遇到过很多类似的问题和文章,尝试了很多不同的方法,但仍然无法找到问题所在。
我在 pycharm 中创建了一个新项目并将其设置为 root。然后在根级别创建了一个脚本,其中包含一些我想在子目录的脚本中导入的变量。
这是 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 的 播放按钮运行 sub_script.py 时,它可以工作并且运行控制台会打印:
/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'
答案 0 :(得分:1)
如果您查看 PyCharm 配置,有两个选项:
它们被默认标记。
就您而言,第一个允许您正确运行脚本,因为它在 PYTHONPATH 环境变量中添加了 root_project 路径。
因此,如果您还想在命令行中运行脚本,您应该设置相同的变量。
你可以这样继续:
打开命令行
如果你使用的是 Linux,你可以使用
导出 PYTHONPATH=
如果您使用的是 Windows,则可以使用
SET PYTHONPATH=
运行脚本
~/Desktop/root_project/subfolder » python3 sub_script.py
请记住,export/set 命令不是永久的,它对当前命令行会话有效。