命令行下執行python找不包的解決方法

首先咱們來了解一下,爲何會出現這樣的問題,以及python搜索包的機制是怎麼樣的python

 

1.爲何會出現這樣的問題?web

包是向下搜索機制.app

 

2.爲何ide中執行沒有報找不到包的問題?ide

python搜索機制,在ide中是以項目爲根路徑, 因此它的搜索機制是從項目根路徑開始向下搜索.spa

 

3.爲何命令行執行時會報找不到包的錯誤?命令行

這是由於命令行執行的時候,是以當前執行的py文件所在目錄級別的下一級開始搜索.  code

這個可能有一點很差理解.blog

上個例子:cmd

rootit

.......web(一級目錄)

       ......sett(二級目錄)

       .......views(二級目錄)

       ......service.py(二級目錄)  (這個命令行執行文件.  命令行運行時,提示找不到views以及sett中的包.)

             .......包搜索級別(三級目錄)

 

如今瞭解了問題的緣由,那麼怎麼解決呢?有這麼簡單的兩種辦法?

1.在service.py文件中,導入sett包和views包以前加入增長root路徑操做.   root要增長到web父目錄.

#########################################################
#將根目錄加入sys.path中,解決命令行找不到包的問題
import sys
import os
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
sys.path.append(rootPath)
#########################################################

以上增長到哪一個級別要,根據實際狀況,靈活運用.   其實目的就是指定一個頂級目錄.來克服向下搜索包的問題.

 

2.在web平級別新建一個py文件.  而後將要執行的py文件導入進去便可.(並不須要做其它操做,看實際狀況.)

from web import service

3.cmd命令行進行項目根目錄,採用相對路徑去執行該py文件。

例如:d盤下test_project項目下有個main.py文件

cmd
cd d:\test_project
./main.py  #相對執行
相關文章
相關標籤/搜索