簡體   English   中英

從目錄導入python中的用戶定義模塊

[英]Importing user defined modules in python from a directory

我正在嘗試導入我在python中編寫的模塊,該模塊只打印出包含數字的列表。 我遇到的問題是我希望能夠從一個單獨的目錄中導入它,但到目前為止我讀過的答案似乎並不適用於我的情況。

例如,鑒於我想從我的文檔文件夾中的目錄導入printnumbers.py,我應該實現以下內容:

    import sys
    sys.path.append('/home/jake/Documents')
    import printnumbers.py

這段代碼導致“導入錯誤”,告訴我指定的模塊不存在。 我不確定從哪里開始,我已多次檢查以確保它是路徑和模塊名稱的正確拼寫。 我仍然試圖准確理解附加到“sys.path”的內容。 根據我的理解,它告訴程序在該目錄中搜索模塊?

感謝任何回答我的新手問題的人。 我只是想更好地理解python文檔不能提供我的思維框架。

當文件是printnumbers.py ,該模塊稱為printnumbers (不帶.py )。 因此使用

import printnumbers

import sys
sys.path.append('/home/jake/Documents')

'/home/jake/Documents'附加到sys.path的末尾。 每當import語句導致Python搜索模塊時,將搜索sys.path中列出的目錄(按所列順序)。 (已經導入的模塊緩存在sys.modules ,因此Python並不總是需要搜索sys.path目錄來導入模塊......)

因此,如果您有一個文件/home/jake/Documents/printnumbers.py ,那么import printnumbers會導致Python導入它,前提是在/home/jake/Documents/之前的sys.path列出的目錄中沒有其他名為printnumbers.py文件/home/jake/Documents/

請注意,將目錄注入sys.path並不是設置Python來搜索模塊的常用方法。 通常最好將/home/jake/Documents到PYTHONPATH環境變量中。 sys.path將自動包含PYTHONPATH環境變量中列出的目錄。

還有一件事,在你的目錄中使用一個空的__ init __.py文件使它成為一個python包(只有這樣Python才會知道這個目錄是一個普通目錄以外的Python包目錄)。 因此,您可以從不同目錄導入該包中的模塊。

暫無
暫無

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

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