PyDev - 仅在 IDE 上未解决的导入问题,仍然 运行
PyDev - unresolved import only on IDE, still running
我想了解 PyDev 不喜欢什么。我在 Ubuntu 下,PyDev 似乎看不到像 bash 那样的库。
我有两个库 sqlite3 和 peewee 的问题。如果我 运行 我的程序放在 shell 上,一切都很好;如果我在新安装的 PyDev 中打开它,我会看到一些带有下划线的指令
Unresolved import: sqlite3
和
Undefined variable from import: 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')
导入错误发生在..导入。第二个 line.This 发生是因为我个人将 /usr/lib/python2.7/sqlite3 添加到 pydev 的 python 解释器的 python 路径中。如果我删除它,错误在 "sqlite3.connect"。我想 connect 没有在该目录上定义。我没找到。
Peewee 还有其他问题。我为我的数据库 table 创建了一个对象 class。一切都很好,直到我尝试使用从 peewee 继承的一些方法。
我的 database.py 看起来像这样:
来自 peewee 导入 *
数据库 = MySQLDatabase('test', **{'host': 'localhost',
'password': 'rt', 'user': 'rt','charset':'utf8mb4'})
class 未知字段(对象):
def init(self, *_, **__): pass
class 基础模型(型号):
class元:
数据库=数据库
class Tbitem(基础模型):
源=整数字段()
名称 = CharField(null=True)
我的 main.py
...
from database import Tbitem
item = Tbitem.get(Tbitem.id==id_item)
"get" 和 "Tbitem.id" 都用红色下划线标出了错误
Undefined variable from import: get
我可以在没有任何反应的情况下继续工作,或者我可以返回到 vim 或 vscode(慢速调试器),但我更喜欢使用它,因为我已经习惯了 eclipse我喜欢 pydev 的想法。我该怎么办?我确实检查了 shell 上的 pythonpath,它看起来一样,只是目录不再存在。
我在 pydev 的 FAQ 上看到它不喜欢软链接。我应该删除所有软链接吗? peewee 不是软链接和 sqlite3 我什至不知道它在哪里完成。
谁有类似的问题和解决方案?我确实阅读了这里关于 SO 的大部分问题,但它们对我不起作用。
你好,
像你一样,我只在 IDE 上有一个未解决的导入,我找到了一个解决方法。
我使用适当的命令安装了 "netifaces":
pip3 install netifaces
安装后,我在文件夹“/usr/local/lib/python3.6/site-packages”中得到了两个条目(ref. Mac OS + homebrew)。
- netifaces-0.10.6.dist-信息
- netifaces.cpython-36m-darwin.so
此时,我在 PyDev 编辑器中遇到了一个未解决的导入问题,但是当我使用 Pydev 启动配置和相同的解释器启动它时,我的应用程序 运行 运行良好。
注意:我还导入了使用 pip3 安装的其他模块,它们的导入没有产生问题。
我创建了符号 link "netifaces.so" 以获取我在 Python 2.7.13 解释器 "site-packages" 文件夹中找到的相同文件
ln -s netifaces.cpython-36m-darwin.so netifaces.so
完成此创建后,所有 运行 都很好:Pydev 编辑器中的导入问题消失了。
问题:哪里出错了?
- 在pip3安装的模块中:安装的“.so”文件没有模块名?
- 在 pyDev 的模块发现功能中,它不关心安装的“.so”文件的"platform extended"名称
我通过强制构建导致该错误的所有外部库来解决它(在解释器的属性下强制内置)
对于我的库,我删除了所有 .pyc 文件并再次尝试,它成功了。
我在使用 Orange-Bioinformatics 时遇到了同样的问题,代码 运行 没问题,但 PyDev 显示未知导入。
这种情况下的问题是 Orange-Bioinformatics 存档中缺少 __init__.py
文件,pip 下载并安装了这些文件。 PyDev 似乎想要每个模块的命名空间声明,所以我只是在 ~/.local/lib/python3.4/site-packages/orangecontrib/ 中创建了一个文件(在你的 /usr/lib/python2.7/sqlite3/ 中case), 将文件命名为 __init__.py
并保存如下内容:
# namespace stub
__import__("pkg_resources").declare_namespace(__name__)
文件已放入子文件夹orangecontrib/bio/
只需通过 Window -> Preferences -> PyDev -> Interpreters -> Python Interpreter -> Apply 刷新 PyDev 的模块列表。现在对我来说一切正常:-)
我想了解 PyDev 不喜欢什么。我在 Ubuntu 下,PyDev 似乎看不到像 bash 那样的库。 我有两个库 sqlite3 和 peewee 的问题。如果我 运行 我的程序放在 shell 上,一切都很好;如果我在新安装的 PyDev 中打开它,我会看到一些带有下划线的指令
Unresolved import: sqlite3
和
Undefined variable from import: 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')
导入错误发生在..导入。第二个 line.This 发生是因为我个人将 /usr/lib/python2.7/sqlite3 添加到 pydev 的 python 解释器的 python 路径中。如果我删除它,错误在 "sqlite3.connect"。我想 connect 没有在该目录上定义。我没找到。
Peewee 还有其他问题。我为我的数据库 table 创建了一个对象 class。一切都很好,直到我尝试使用从 peewee 继承的一些方法。
我的 database.py 看起来像这样:
来自 peewee 导入 * 数据库 = MySQLDatabase('test', **{'host': 'localhost', 'password': 'rt', 'user': 'rt','charset':'utf8mb4'})
class 未知字段(对象): def init(self, *_, **__): pass
class 基础模型(型号): class元: 数据库=数据库
class Tbitem(基础模型): 源=整数字段() 名称 = CharField(null=True)
我的 main.py
...
from database import Tbitem
item = Tbitem.get(Tbitem.id==id_item)
"get" 和 "Tbitem.id" 都用红色下划线标出了错误
Undefined variable from import: get
我可以在没有任何反应的情况下继续工作,或者我可以返回到 vim 或 vscode(慢速调试器),但我更喜欢使用它,因为我已经习惯了 eclipse我喜欢 pydev 的想法。我该怎么办?我确实检查了 shell 上的 pythonpath,它看起来一样,只是目录不再存在。
我在 pydev 的 FAQ 上看到它不喜欢软链接。我应该删除所有软链接吗? peewee 不是软链接和 sqlite3 我什至不知道它在哪里完成。
谁有类似的问题和解决方案?我确实阅读了这里关于 SO 的大部分问题,但它们对我不起作用。
你好,
像你一样,我只在 IDE 上有一个未解决的导入,我找到了一个解决方法。
我使用适当的命令安装了 "netifaces":
pip3 install netifaces
安装后,我在文件夹“/usr/local/lib/python3.6/site-packages”中得到了两个条目(ref. Mac OS + homebrew)。
- netifaces-0.10.6.dist-信息
- netifaces.cpython-36m-darwin.so
此时,我在 PyDev 编辑器中遇到了一个未解决的导入问题,但是当我使用 Pydev 启动配置和相同的解释器启动它时,我的应用程序 运行 运行良好。
注意:我还导入了使用 pip3 安装的其他模块,它们的导入没有产生问题。
我创建了符号 link "netifaces.so" 以获取我在 Python 2.7.13 解释器 "site-packages" 文件夹中找到的相同文件
ln -s netifaces.cpython-36m-darwin.so netifaces.so
完成此创建后,所有 运行 都很好:Pydev 编辑器中的导入问题消失了。
问题:哪里出错了?
- 在pip3安装的模块中:安装的“.so”文件没有模块名?
- 在 pyDev 的模块发现功能中,它不关心安装的“.so”文件的"platform extended"名称
我通过强制构建导致该错误的所有外部库来解决它(在解释器的属性下强制内置) 对于我的库,我删除了所有 .pyc 文件并再次尝试,它成功了。
我在使用 Orange-Bioinformatics 时遇到了同样的问题,代码 运行 没问题,但 PyDev 显示未知导入。
这种情况下的问题是 Orange-Bioinformatics 存档中缺少 __init__.py
文件,pip 下载并安装了这些文件。 PyDev 似乎想要每个模块的命名空间声明,所以我只是在 ~/.local/lib/python3.4/site-packages/orangecontrib/ 中创建了一个文件(在你的 /usr/lib/python2.7/sqlite3/ 中case), 将文件命名为 __init__.py
并保存如下内容:
# namespace stub
__import__("pkg_resources").declare_namespace(__name__)
文件已放入子文件夹orangecontrib/bio/
只需通过 Window -> Preferences -> PyDev -> Interpreters -> Python Interpreter -> Apply 刷新 PyDev 的模块列表。现在对我来说一切正常:-)