Import statement works on PyCharm but not from terminal
pycharm 2016.2.3,Mac OS X 10.11.1,python 3.5(自制);
我有这个文件夹结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | project /somepackage /subpackage __init__.py bar.py __init__.py foo.py foo.py: import somepackage.subpackage.bar print("foo") bar.py: print("bar") |
所以我的预期产出是
1 2 | bar foo |
号
从Pycharm运行时,此功能正常。但是,当我从终端运行它时,会收到一个重要错误:
1 2 3 4 5 6 | $ pwd $ /home/project (not the actual path; just omitting some personal stuff) $ python3.5 somepackage/foo.py File"foo.py", line 1, in <module> import somepackage.subpackage.bar ImportError: No module named 'somepackage' |
我发现了这个问题,也就是同样的问题。但是,所有建议的解决方案都不适用于我,因为我确实使用了与pycharm相同的python解释器,而且我目前在包含
有人对如何解决这个问题有其他的建议吗?谢谢你!
您像运行脚本一样运行foo.py,但实际上您像使用模块一样使用它。因此,正确的解决方案是将其作为模块运行:
1 | python3 -m somepackage.foo |
对于记录,另一种选择是编辑路径,如下所示:
1 | export PYTHONPATH=. |
号
(或者你可以把绝对目录放在那里,当然你也可以附加已经在你的pythonpath中的任何其他目录。)这更接近pycharm所做的,但在哲学上不太正确。