關於在pycharm中配置導入路徑的問題?
02-01
學用Scrapy寫爬蟲,在Spider里載入Item中的類時,編譯器報了個錯:(就是這樣)
This inspection detects names that should resolve but dont. Due to dynamic dispatch and duck typing, this is possible in a limited but useful number of cases. Top-level and class-level items are supported better than instance items.網上查了一下,似乎很常見,說是編譯器找不到你自己的庫,需要配置導入路徑:(就像這樣)
似乎灰常順利,灰常簡單……然而應用之後,重啟之後,把所有路徑都添加進去之後,在命令行用了
import sys
sys.path.append(…………)
之後,沒有任何效果,還是灰灰是顏色,運行還是報錯:
還特么沒定義……
Pycharm 5.03 CommunityPython 2.7.9win8.1
其實跟pycharm沒啥關係。
python的包你可以看成是sys.path下的帶__init__.py的子目錄。
你那句import則是從Spider_Test包下items模塊/包里import了個DmozItem。
你把Spider_Test加入sys.path(或者在pycharm里加了項後),由於Spider_Test不再是子目錄,所以再怎麼想也應該變成from item import DmozItem。
此外不建議改sys.path……本來搜索目錄只包含代碼所在目錄和site-package。你可以考慮把要用的包複製到當前目錄下,或者把包裝進site-package里,而不是硬寫改path。解決方案:
使用相對導入PEP 0328 -- Imports: Multi-Line and Absolute/Relative
from ..items import DmozItem
第一個點(.) 表示當前目錄,第二個點表示上一級父目錄。這樣做還有一個額外的好處就是你可以隨意修改你的包的名稱,松耦合。
問題可能出現的原因:你Scrapy項目目錄(Spider_Test)不是你pycharm的Content Root目錄,你可以試試在pycharm里open你的項目目錄Spider_Test看看還有沒有這個問題。IntelliJ IDEA 15.0 Help :: Content Root
模塊導入的問題解決了嗎?我也遇到了這個問題,求解答同級目錄下導入也識別不了
推薦閱讀: