Pycharm 2016.2.3, Mac OS X 10.11.1, Python 3.5 (Homebrew);
J'ai cette structure de dossiers
project
/somepackage
/subpackage
__init__.py
bar.py
__init__.py
foo.py
foo.py:
import somepackage.subpackage.bar
print("foo")
bar.py:
print("bar")
Donc, ma sortie attendue est
bar
foo
Cela fonctionne bien lorsqu'il est exécuté à partir de PyCharm. Cependant, lorsque je l'exécute à partir de mon terminal, j'obtiens une 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'
J'ai trouvé cette question , qui est à peu près le même problème. Cependant, aucune des solutions suggérées ne fonctionne pour moi, car j'utilise en effet le même interpréteur Python que PyCharm et je suis actuellement dans le dossier qui contient le somepackage/
dossier.
Quelqu'un a-t-il d'autres suggestions sur la façon de résoudre ce problème? Merci de bien vouloir!
Vous exécutez foo.py comme un script, mais vous l'utilisez vraiment comme un module. La bonne solution consiste donc à l'exécuter en tant que module:
python3 -m somepackage.foo
Pour mémoire, une autre alternative est d'éditer votre chemin comme:
export PYTHONPATH=.
(Ou vous pouvez y mettre le répertoire absolu, et bien sûr, vous devez ajouter tous les autres répertoires qui sont déjà dans votre PYTHONPATH.) C'est plus proche de ce que fait PyCharm, mais c'est moins philosophiquement correct.