新しいライブラリで作成した別のライブラリのモジュールを使用しています。Python インタープリターは解決できますが、PyDev と NOSETESTS は私の新しいライブラリで使用されているインポートを解決できません。私が参照しているライブラリは私のプロファイルのサイトパッケージに保存されており、そのフォルダーがパスに含まれていることを確認するためだけに PyDev の PYTHONPATH を再構成しました。です。
問題は次のようになります。
私の輸入:
import my_library
# Here Eclipse says "ID:E1101 Module 'my_library' has no 'MyClass' member"
print(my_library.MyClass)
# Here Eclipse shows the same error as above
class NewClass(my_library.MyClass):
...
それにもかかわらず、Eclipse ターミナルまたはシステム ターミナルでファイルを実行すると、次のように出力されます。
<class 'my_library.my_class.MyClass'>
リファクタリングしているライブラリの古い実装に基づくテストがあり、それらを PyDev デバッガーで実行すると、すべてエラーで終了します。nosetests
もエラーを返しますが、テストを実行して手動でpython test.py
テストを実行すると、
これがノーズテストの出力です。
E......
======================================================================
ERROR: Failure: AttributeError ('module' object has no attribute 'MyClass')
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/me/.local/lib/python2.7/site-packages/nose-1.3.0-py2.7.egg/nose/loader.py", line 413, in loadTestsFromName
addr.filename, addr.module)
File "/home/me/.local/lib/python2.7/site-packages/nose-1.3.0-py2.7.egg/nose/importer.py", line 47, in importFromPath
return self.importFromDir(dir_path, fqname)
File "/home/me/.local/lib/python2.7/site-packages/nose-1.3.0-py2.7.egg/nose/importer.py", line 94, in importFromDir
mod = load_module(part_fqname, fh, filename, desc)
File "/home/me/development/eclipse/newLibrary/new_library/__init__.py", line 29, in <module>
from .classes import User, DataPackage
File "/home/me/development/eclipse/newLibrary/new_library/classes.py", line 37, in <module>
from .metadata import MetaData
File "/home/me/development/eclipse/newLibrary/new_library/metadata.py", line 13, in <module>
print(my_library.MyClass)
AttributeError: 'module' object has no attribute 'MyClass'
----------------------------------------------------------------------
Ran 7 tests in 0.007s
FAILED (errors=1)
システムと Eclipse で使用される PYTHONPATH は同じようです (少なくとも、Eclipse 設定でパッケージを含む site-packages フォルダーが表示されます)。インタープリターも同じです (Python 2.7)。
したがって、インポートステートメントが機能することがわかります-少なくともコマンドラインから。しかし、Eclipse 内ではそうではありません。また、他のプロジェクトを参照したり、逆参照したりしようとしましたが、すべて効果がありませんでした。パッケージのインポートは問題なく実行されますが、Eclipse はクラスが存在するとは信じていません。どうしたの?