繁体   English   中英

Python解释器可解决导入问题,PyDev和鼻子测试无法解决

[英]Python interpreter resolves imports, PyDev and nosetests don't

我正在使用我在新库中编写的另一个库中的模块。 PyDev和鼻子测试无法解析在我的新库中使用的导入,尽管Python解释器可以做到这一点。 我要引用的库存储在我的个人资料网站程序包中,并且我已经重新配置了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)。

所以我看到import语句有效-至少从命令行开始。 但是在Eclipse中却没有。 我还尝试了引用另一个项目或取消引用它,都没有任何效果。 程序包的导入过程不会产生任何抱怨,但是Eclipse不相信我该类存在。 这是怎么回事?

这里的常见问题是“ my_library”不在PYTHONPATH中。

请注意,要导入的库,必须将其父文件夹添加到PYTHONPATH。

即:如果图书馆有:

/folder <-- this is the folder that should be added to the PYTHONPATH.
/folder/my_library
/folder/my_library/__init__.py

如果它是项目内的文件夹,则必须在项目属性> PyDev-PYTHONPATH中将该文件夹设置为源文件夹

如果它是系统中的文件夹,则应将其添加到窗口>首选项> PyDev>解释器-Python中(如果已经存在,只需单击“应用”以强制其重新扫描更改)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM