用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
