2016-02-25 57 views
0

我完全不熟悉Python,並且想創建我的第一個用於peronal使用的Python庫。創建並導入自定義python包 - 導入在根目錄下不起作用

我正在使用Python 2.7.5,並運行IDLE接口。

到目前爲止,我從文檔和相關問題理解的是:

  • Python的經歷在sys.path所列目錄的列表中找到腳本和庫
  • 包的目錄中必須包含一個__init__.py文件,它可以爲空
  • 我要創建的模塊應該是一個modulename.py文件與包目錄裏面的代碼

(來源:http://www.johnny-lin.com/cdat_tips/tips_pylang/path.html --- https://docs.python.org/2/tutorial/modules.html

這裏是我的嘗試失敗:

  • 創建創造了__init__.py創建的個人包目錄C:\....\pythonlibs
  • 子包目錄C:\....\pythonlibs\package
  • 文件夾內的文件
  • packacge中創建mymodule.py文件dir

然後在空閒時才能使用此代碼:

import sys  
sys.path.append(r'C:\....\pythonlibs') 

第一個問題:

目前,我必須這樣做,每次我進入IDLE追加。我該如何將目錄保存在sys.path中,就像那裏有很多其他目錄一樣?

然後我試圖導入我的包:

import pythonlibs #fails!! why?  
import pythonlibs.package #fails!! why?  
import package #works  

的錯誤是:ImportError: No module named pythonlibs

第二期?

這似乎是違反文檔,爲什麼我不能從根目錄pythonlibs文件夾導入?

+1

因爲您的導入是相對於您添加的路徑:'r'C:\ .... \ pythonlibs''。如果有'C:\ .... \ pythonlibs \ pythonlibs'目錄,那麼你可以'導入pythonlibs'。您可能想要將路徑添加到'r'C:\ .... \''並查找'PYTHONPATH'環境變量。 – msw

回答

2

隨着線

sys.path.append(r'C:\....\pythonlibs') 

你指示的解釋,開始在該目錄中尋找模塊(庫)。由於此目錄不包含pythonlibs文件夾(父文件夾),因此無法導入它。

同樣 - 因爲它包含模塊package,它可以導入它。