我试图了解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我甚至不知道它在哪里完成。
有类似问题的人和解决方案?我确实在这里阅读了大部分问题,但是他们不适合我。
答案 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 +自制软件)。
此时,我在PyDev编辑器中遇到了一个未解决的导入问题,但是当我使用Pydev启动配置和相同的解释器启动它时,我的应用程序运行良好。
注意:我还导入了使用pip3安装的其他模块,并且它们的输入确实产生了问题。
我创建了符号链接" netifaces.so"获取我在" site-packages"中找到的相同文件Python 2.7.13解释器的文件夹
ln -s netifaces.cpython-36m-darwin.so netifaces.so
创建之后,一切运行良好:导入问题在Pydev编辑器中消失。
问题:错误在哪里?
答案 2 :(得分:0)
我通过强制构造导致该错误的所有外部库(在解释器属性下强制内置)来解决它 对于我的库,我删除了所有的.pyc文件并再次尝试,并且它有效。