Pycharm 2016.2.3、Mac OS X 10.11.1、Python 3.5(Homebrew);
このフォルダ構造があります
project
/somepackage
/subpackage
__init__.py
bar.py
__init__.py
foo.py
foo.py:
import somepackage.subpackage.bar
print("foo")
bar.py:
print("bar")
だから私の期待される出力は
bar
foo
これはPyCharmから実行するとうまく機能します。ただし、ターミナルから実行するとImportErrorが発生します。
$ 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インタープリターを実際に使用しており、現在somepackage/
フォルダーを含むフォルダーにいるため、推奨されるソリューションはどれも私にとっては機能しません。
この問題を解決する方法について他に提案はありますか?よろしくお願いします!
スクリプトのようにfoo.pyを実行していますが、実際にはモジュールのように使用しています。したがって、適切な解決策はそれをモジュールとして実行することです:
python3 -m somepackage.foo
記録のために、別の方法は次のようにパスを編集することです:
export PYTHONPATH=.
(または、絶対ディレクトリをそこに配置することもできます。もちろん、PYTHONPATHに既に存在する他のディレクトリを追加する必要があります。)これは、PyCharmが行うことにより近いですが、哲学的には正しくありません。