PyDev - 仅在IDE上仍未运行导入,仍在运行

时间:2017-06-07 20:20:00

标签: python pydev

我试图了解PyDev不喜欢什么。我在Ubuntu下,似乎PyDev没有看到像bash这样的库。 我有两个库,sqlite3和peewee的问题。如果我在shell上运行我的程序,一切都很好;如果我在新安装的PyDev中打开它,我会看到一些带有消息下划线的指令

  

未解决的导入:sqlite3

  

来自导入的未定义变量:get

第一个错误来自以下代码:

from pprint import pprint
import sqlite3
from bs4 import BeautifulSoup
import codecs
from database import Tbrecipe
from datetime import datetime
import logging

def main():
    logger = logging.getLogger('peewee')
    logger.setLevel(logging.DEBUG)
    logger.addHandler(logging.StreamHandler())
    CONN = sqlite3.connect('ent.db')  

导入错误发生在.. import。第二行。发生这种情况是因为我个人将/usr/lib/python2.7/sqlite3添加到了pydev的python解释器的pythonpath中。如果我将其删除,则错误发生在" sqlite3.connect"。我想在该目录上没有定义connect。我没找到它。

Peewee还有其他问题。我为我的数据库表创建了一个对象类。一切都很好,直到我尝试使用从peewee继承的一些方法。

我的database.py看起来像这样:

来自peewee进口* database = MySQLDatabase(' test',** {' host':' localhost',  '密码':' rt','用户'' rt',' charset':' utf8mb4& #39;})

类UnknownField(object):     def init (self,* _,** __):传递

类BaseModel(Model):     类Meta:         database = database

class Tbitem(BaseModel):     source = IntegerField()     name = CharField(null = True)

在我的main.py

...
from database import Tbitem
item = Tbitem.get(Tbitem.id==id_item)

两者"得到"和#34; Tbitem.id"带有错误的红色下划线

  

来自导入的未定义变量:get

我可以继续工作,因为没有任何反应,或者我可以回到vim或vscode(慢速调试器),但是我更喜欢使用它,因为我曾经习惯于日食,我喜欢这个想法PyDev的。我该怎么办?我确实检查了shell上的pythonpath,它看起来是一样的,除了一个不再存在的目录。

我在pydev的常见问题解答中读到它不喜欢软链接。我应该删除所有软链接吗? peewee不是softlinked和sqlite3我甚至不知道它在哪里完成。

有类似问题的人和解决方案?我确实在这里阅读了大部分问题,但是他们不适合我。

3 个答案:

答案 0 :(得分:1)

我对Orange-Bioinformatics有同样的问题,代码运行正常,但PyDev显示未知的导入。

此案例中的问题是Orange-Bioinformatics存档中缺少__init__.py个文件,这些文件已下载并安装。 PyDev似乎想要每个模块的命名空间声明,所以我只是在〜/ .local / lib / python3.4 / site-packages / orangecontrib /中创建了一个文件(将是/usr/lib/python2.7/sqlite3/ in您的情况),将文件命名为__init__.py并使用以下内容保存:

# namespace stub
__import__("pkg_resources").declare_namespace(__name__)

该文件已放入子文件夹orangecontrib / bio /

只需通过Window刷新PyDev的模块列表 - >偏好 - > PyDev - >口译员 - > Python解释器 - >应用。现在一切都适合我: - )

答案 1 :(得分:0)

的Bonjour,

正如您所说,我只在IDE上有一个未解决的导入,我找到了解决方法。

我安装了" netifaces"使用适当的命令:

pip3 install netifaces

安装完成后,我在文件夹中找到了两个条目" /usr/local/lib/python3.6/site-packages" (参考Mac OS +自制软件)。

  • netifaces-0.10.6.dist-信息
  • netifaces.cpython-36m-darwin.so

此时,我在PyDev编辑器中遇到了一个未解决的导入问题,但是当我使用Pydev启动配置和相同的解释器启动它时,我的应用程序运行良好。

注意:我还导入了使用pip3安装的其他模块,并且它们的输入确实产生了问题。

我创建了符号链接" netifaces.so"获取我在" site-packages"中找到的相同文件Python 2.7.13解释器的文件夹

ln -s  netifaces.cpython-36m-darwin.so  netifaces.so

创建之后,一切运行良好:导入问题在Pydev编辑器中消失。

问题:错误在哪里?

  1. 在由pip3完成的模块安装中:已安装的" .so"文件没有模块的名称?
  2. 在pyDev的模块发现功能中,它没有处理"平台扩展"已安装的" .so"文件

答案 2 :(得分:0)

我通过强制构造导致该错误的所有外部库(在解释器属性下强制内置)来解决它 对于我的库,我删除了所有的.pyc文件并再次尝试,并且它有效。