2016-10-19 16 views
0

モジュールをPythonで相対パスからインポートする際に問題があります。私はウェブ上で見つけたすべてを試しました。ここに私のディレクトリ構造は次のとおりです。相対パスからモジュールをインポートできません

starcipher/ 
    __init__.py 
    caesar.py 
    tests/ 
     __init__.py 
     test_caesar.py 

あなたが言うことができるように、tests/ディレクトリはすべての私のユニットテストが含まれています。 test_caesar.pycaesar.pyで定義されたクラスを使用します。ここに私のファイルです:

caesar.py

class Caesar: 
    # Blabla 

tests/test_caesar.py

import unittest 
from ..caesar import Caesar 

# I also tried: 
from caesar import Caesar 
from starcipher.caesar import Caesar 
from . import Caesar 
from .. import Caesar 

# Nothing works. 

class TestCaesar(unittest.TestCase): 
    # Blabla 

私はこのエラーを毎回持っている:

Traceback (most recent call last): 
    File "test_caesar.py", line 2, in <module> 
    from ..caesar import Caesar 
SystemError: Parent module '' not loaded, cannot perform relative import 

EDIT

012ルートディレクトリに

  • :ここ

    は、私は私のユニットテストを実行する方法ですpython test_caesar.py

  • あるいは:
  • それともtests/ディレクトリ内python -m unittest discover tests/python -m unittest

SOLUTION

Pocinのおかげで、ディレクトリのファイルが問題を解決しました!

ありがとうございます。

+0

テストファイルの実行方法を正確に表示する必要があります。 –

+1

私はまったく同じことを(py.testだけで)苦労していました。私の場合は、テスト/ディレクトリから '__init __。py'を削除すると、私のために修正されました –

+0

@Pocin Yeah! '__init __。py'を' tests/'から削除しました!ありがとう:) – Mathieu

答えて

0

解決策がうまく表示されるように、tests/__init__.pyファイルを削除するように修正されました。

しかし、私はそれがなぜ機能しているのか、誰かが説明を提供できるかどうかは分かりません。

関連する問題