2017-11-29 12 views
0

私はこれに類似した構造を持つプロジェクト開発にPyCharm CEを使用しています:私は、このようなtest_config.pyとしての私のテストスクリプトを実行しようとするとPythonの:「はImportError:<my module>という名前のモジュール」

test_python/ 
|-- app 
| |-- __init__.py 
| |-- mymodule.py 
| |-- mymodule.pyc 
| `-- test_mymodule.py 
|-- config.py 
`-- tests 
    |-- __init__.py 
    |-- test_config.py 
    `-- test_models.py 

を、私が手:

$ python tests/test_config.py 
Traceback (most recent call last): 
    File "tests/test_config.py", line 1, in <module> 
    from config import app_config 
ImportError: No module named config 

私は(私はすでに行っている)のパッケージにあるすべてのディレクトリ内のinit の.pyファイルを必要との話を他のSOの記事をたくさん読みました。多くの人はsys.pathを使いこなすことをお勧めします。この後者のアプローチの私の問題は、私が前に道に干渉する必要がなかったことです。私はそれが私の開発環境の設定で変更されたものかどうかは分かりませんが、ここにあります:

Python 2.7 | | macOSシエラ| PyCharm CE

私はvirtualenvで仮想環境をインストールしようとしましたが、違いは見られませんでした。ここでは、githubのサンプルプロジェクトをご自身で実行したい場合は

+0

'$ python test_models.py'は' ImportError:No module app.mymodule 'につながりますが、' $ python app/test_mymodule.py'は両方のテストスクリプトがほとんど同じ内容を持っていても失敗しません。 import statement – kip2

答えて

0

フォルダの深さに問題があるようです。交換:from ../config import app_config

+0

'from config import app_config'を別のものに置き換えることを意味しますか?その行を '..config import app_config'に変更すると、' ValueError:非パッケージでの相対インポートを試みました ' – kip2

+0

これは同様の問題です。これらは解決策だと思います。 [__init__.py](https://stackoverflow.com/questions/11536764/how-to-fix-attempted-relative-import-in-non-package)であっても、「非パッケージでの相対インポートを試みました」を修正する方法-even-with-init-py)、[ValueError:テストパッケージではない非パッケージでの相対インポートを試みました](https://stackoverflow.com/questions/37193670/valueerror-attempted-relative-import-in-non- package-for-tests-package) –

0

実行コンフィギュレーションの作業ディレクトリをtest_pythonに変更するとうまくいくと思います。 import文のすべてのパッケージはPythonパスのいくつかのエントリに関連しており、作業ディレクトリは通常Pythonパスにあります。

関連する問題