簡體   English   中英

PyDev-未解析的導入僅在IDE上仍在運行

[英]PyDev - unresolved import only on IDE, still running

我試圖了解PyDev不喜歡的東西。 我在Ubuntu下,似乎PyDev沒有像bash那樣看到庫。 我有兩個庫sqlite3和peewee有問題。 如果我在外殼上運行程序,一切都很好; 如果我在新安裝的PyDev中打開它,則會看到幾條帶有下划線的說明

未解決的導入:sqlite3

導入中的未定義變量:獲取

第一個錯誤來自以下代碼:

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')  

導入時發生錯誤。 第二行,這是因為我親自將/usr/lib/python2.7/sqlite3添加到pydev的python解釋器上的pythonpath中。 如果刪除它,則錯誤位於“ sqlite3.connect”。 我想在該目錄上未定義connect。 我沒找到

Peewee還有其他問題。 我為數據庫表創建了一個對象類。 一切正常,直到我嘗試使用從peewee繼承的一些方法為止。

我的database.py看起來像這樣:

來自peewee import *數據庫= MySQLDatabase('test',** {'host':'localhost','password':'rt','user':'rt','charset':'utf8mb4'})

class UnknownField(object):def init (self,* _,** __):通過

class BaseModel(Model):類Meta:數據庫=數據庫

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

在我的main.py上

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

“ get”和“ Tbitem.id”都以紅色加下划線並顯示錯誤

導入中的未定義變量:獲取

我可以繼續工作而不會發生任何事情,也可以返回vim或vscode(慢速調試器),但是我更喜歡使用它,因為我習慣了日食,並且我喜歡pydev的想法。我該怎么辦?我確實在外殼上檢查了pythonpath,除了目錄不再存在以外,它看起來一樣。

我在pydev的FAQ上讀到,它不喜歡軟鏈接。 我應該刪除所有軟鏈接嗎? peewee沒有被軟鏈接,而sqlite3我什至不知道它在哪里完成。

任何有類似問題和解決方案的人? 我確實在這里閱讀了關於SO的大多數問題,但是它們對我不起作用。

我在Orange-Bioinformatics中遇到了同樣的問題,代碼可以正常運行,但是PyDev顯示了未知的導入。

在這種情況下,問題出在Orange-Bioinformatics存檔中缺少__init__.py文件,該文件已下載並安裝。 PyDev似乎想要每個模塊的名稱空間聲明,因此我只是在〜/ .local / lib / python3.4 / site-packages / orangecontrib /中創建了一個文件(在/usr/lib/python2.7/sqlite3/中(根據您的情況),將文件命名為__init__.py並保存以下內容:

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

該文件被放入子文件夾orangecontrib / bio /

只需通過窗口->首選項-> PyDev->解釋器-> Python解釋器->應用刷新PyDev的模塊列表。 現在對我來說一切都很好:-)

你好,

像您一樣,我僅在IDE上有未解決的導入,並且找到了解決方法。

我使用適當的命令安裝了“ netifaces”:

pip3 install netifaces

安裝后,我在文件夾“ /usr/local/lib/python3.6/site-packages”中獲得了兩個條目(參考Mac OS + homebrew)。

  • netifaces-0.10.6.dist-info
  • netifaces.cpython-36m-darwin.so

此時,我在PyDev編輯器中有一個未解決的導入問題,但是當我使用Pydev啟動配置和相同的解釋器啟動應用程序時,我的應用程序運行良好。

注意:我也導入了其他使用pip3安裝的模塊,並且它們的導入不會產生問題。

我創建了符號鏈接“ netifaces.so”,以獲得與我在Python 2.7.13解釋器的“ site-packages”文件夾中找到的相同文件

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

創建完成后,所有程序運行良好:導入問題在Pydev編輯器中消失了。

問題:錯誤在哪里?

  1. 在pip3完成的模塊安裝中:安裝的“ .so”文件沒有模塊名稱嗎?
  2. 在pyDev的模塊發現功能中,它不會處理已安裝的“ .so”文件的“平台擴展”名稱

我通過強制構建引起該錯誤的所有外部庫(強制在解釋器的屬性下內置)來解決該問題。對於我的庫,我刪除了所有.pyc文件,然后再次嘗試並成功了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM