關於在pycharm中配置導入路徑的問題?

學用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 Community

Python 2.7.9

win8.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


模塊導入的問題解決了嗎?我也遇到了這個問題,求解答

同級目錄下導入也識別不了


推薦閱讀:

TAG:Python | 編程 | 計算機 | PyCharm | scrapy |