python的相對路徑導入問題


用python做項目,如果項目大了,或者想更好的管理程序,總是要使用包。包解決了命名沖突的問題。

今天在使用python的相對路徑導入的時候,遇到了不少的問題。

包導入情形:

src/
    __init__.py
    main.py
    components/
        __init__.py
        expander.py
        language_id.py
    utilities/
        __init__.py
        functions.py

如果要在expander.py中引用functions.py中的內容,或許這樣表示

from ..utilities import functions.py

 

1.錯誤一:ValueError:Attemptedrelative import beyond toplevel package

這個問題是因為到達了包的最頂層,而最頂層不是一個包。

解決方法:在main.py同級添加一個目錄mod,包含components和utilities,並在mod中添加一個__init__.py,即可解決

參見:http://stackoverflow.com/questions/4175534/relative-imports-in-python

 

2.錯誤二:ValueError: Attempted relative import in non-package

使用相對路徑進行導入的文件,不能再當作主文件執行。原因如下:

http://blog.csdn.net/chinaren0001/article/details/7338041

 

3.錯誤三:no module named ***

在指定路徑下沒有找到該模塊。

 

另外:在main.py執行的時候,沒有指定路徑的文件默認與main.py是同一路徑。

轉自:http://hi.baidu.com/fleago/item/06b5c95765b17e12aaf6d79b


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM