私はかなり長い間、Pythonでいくつかの深刻な作業を行っているだけでなく、悩んでいます。しかし、私はまだそれに少しずつ問題があります。別のフォルダからPythonスクリプトをインポートする適切な方法
Pythonで作業するときは、PyCharm CE
を使用するのが最も快適だとわかります。典型的なシナリオは、新しいvirtualenv
を作成し、PyCharmを起動してそこに私のvirtualenv
をオープンするというものです。そこから、オートパイロットのように、PyCharmは、site-packages
とPythonランタイムを使用して関連するすべての汚い作業を処理します。
私はいつも私のvirtualenv
をきれいに整理しておきたいと思っています。私はしばしば自分のソースコードをサブモジュール/サブフォルダに意味論的に編成しています。だから私はいくつかのコード、またはクラス、または他のフォルダから何をインポートするたびに私はそれをインポートします。私はsome_script.py
に実装されA()
という名前の関数を使用したい、foo.py
のどこかに、今
├── bin
├── include
├── lib
└── src
├── foo.py
├── important_scripts
├── some_script.py
└── some_other_script.py
└── pip-selfcheck.json
:
は、私は私のvirtualenv
で次のような構造を持っている想像してみてください。明白な方法は、
foo.py
に簡単な行を追加することです -
from some_script import A
のようなものです。 PyCharmから私のコード(この場合は
foo.py
)を実行してデバッグすると、そのような作業は完璧です。
上記の典型的なシナリオとは対照的に、私はTerminal.app
から同じことをしたかったのです。だから私は端末cd
を私のvirtualenv
に起動して起動します。次に、フォルダにあるvirtualenv
のPython実行ファイルを使用して、foo.py
を実行しようとしています(これはPyCharmウィンドウからfoo.py
を右クリックして実行することと同等です)。残念ながら、私はエラーModuleNotFoundError: No module named 'some_script'
を取得します。
シンプルなディテールなどが欠けていると思います。私が言ったように、それはPyCharmから実行すると魔法のように動作します。
とにかく、助言や助言は高く評価されます。前もって感謝します。
[サブディレクトリからファイルをインポートする](https://stackoverflow.com/questions/1260792/import-a-file-from-a-subdirectory)を参照してください。 – Galen