2016-10-26 53 views
3

我使用這個代碼在Django設置構建數據庫路徑蟒蛇的virtualenv無法訪問主目錄文件

from os.path import expanduser 
defautl_db_path = expanduser("~")+"/db.sqlite3" 

的代碼運行良好,如果我安裝的Django系統範圍內,但如果我跑裏面virtualenv應用該應用程序拋出一個異常說unable to open database file

我該如何解決這個問題?

+0

你能確認'os.path.expanduser(「〜」)'的結果是否合適嗎?您可能需要爲virtualenv包裝配置env變量'WORKON_HOME'。 – sytech

+0

我在virtualenv中打開了一個python shell會話,'os.path.expanduser('〜')'的輸出是正確的。 – Fanooos

+0

你可以展示你的數據庫設置如何使用路徑 –

回答

1

你檢查過程所有者主目錄的權限嗎? 這是真的,你使用的是Unix操作系統?

最有可能的django用戶是萬維網數據。

如果您選中此項,您可以嘗試通過向〜添加用戶名來解決特定用戶的主目錄。

from os.path import expanduser 
defautl_db_path = expanduser("~www-data")+"/db.sqlite3" 

在文檔寫的是:

os.path.expanduser(路徑) 在Unix和Windows,與起始成分返回參數〜或〜用戶通過該用戶的主目錄代替。

在Unix上,如果設置了初始值,則由環境變量HOME代替;否則通過內置模塊pwd在密碼目錄中查找當前用戶的主目錄。直接在密碼目錄中查找初始用戶。

+0

這個答案可能有點不成熟。答案不應該要求提問者澄清。如果你需要澄清,應該使用評論。一旦你有足夠的堆棧溢出聲望,你將被允許添加評論的問題。乾杯! – sytech

+0

我正在使用內置服務器'./manage.py runserver'運行應用程序,因此進程的用戶是我的用戶而不是apache用戶。 – Fanooos

+0

Trydefautl_db_path = expanduser(「〜」)+「/ db.sqlite3」 – JeyJey