我正在開發本地Windows機器上的Django應用程序,然後部署到託管的Linux服務器。路徑的格式在兩者之間是不同的,並且在部署消耗更多時間之前手動替換。我可以根據設置文件中的變量進行編碼,但是如果有人想知道是否有人有這種情況的最佳做法。Django路徑,在Windows中開發,部署在Linux上
7
A
回答
4
Django的書建議使用os.path.join
(並使用斜線而不是反斜線在Windows上):
import os.path
TEMPLATE_DIRS = (
os.path.join(os.path.dirname(__file__), 'templates').replace('\\','/'),
)
我想這是因爲你可以輕鬆地創建這樣的相對路徑的最佳解決方案。如果你有多個相對路徑,一個輔助功能將縮短代碼:
def fromRelativePath(*relativeComponents):
return os.path.join(os.path.dirname(__file__), *relativeComponents).replace("\\","/")
如果需要絕對路徑,您應結合使用環境變量(與os.environ["MY_APP_PATH"]
)與os.path.join
。
2
我們的情況與您的情況非常相似,我們一直在使用不同的設置路徑,基於sys.platform
。 事情是這樣的:
import os, sys
DEVELOPMENT_MODE = sys.platform == 'win32'
if DEVELOPMENT_MODE:
HOME_DIR = 'c:\\django-root\\'
else:
HOME_DIR = '/home/django-root/'
它的工作原理很確定 - 假定所有的開發正在Windows上完成的。
1
添加
import os.path
BASE_PATH = os.path.dirname(__file__)
在你的設置文件的頂部,然後用BASE_PATH
無處不在,你想一個相對路徑來你的Django項目。
例如:
MEDIA_ROOT = os.path.join(BASE_PATH, 'media')
(您需要使用os.path.join(),而不是簡單地寫東西像MEDIA_ROOT = BASE_PATH+'/media'
,因爲Unix的使用連接 '/' 目錄,而Windows更傾向於用 '\' )
0
在
settings.py
添加以下代碼行
import os.path
SETTINGS_PATH = os.path.abspath(os.path.dirname(__file__))
head, tail = os.path.split(SETTINGS_PATH)
#add some directories to the path
import sys
sys.path.append(os.path.join(head, "apps"))
#do what you want with SETTINGS_PATH
相關問題
- 1. php/mysql:在Win上開發,在Linux上部署
- 2. 在Windows上開發 - >在虛擬機上部署?
- 3. readline for windows - 在linux上開發
- 4. 在Windows或Linux上的Android開發?
- 5. 遠程開發在Windows和Linux上
- 6. 將在Windows中編譯的war部署到Linux上的Weblogic上
- 7. 在linux上部署戰爭
- 8. django在Windows 7中的路徑問題
- 9. 在Linux上運行的Jenkins在Windows上部署一個包
- 10. 在部署到不同目錄結構時比在開發中更改依賴路徑的路徑
- 11. 在Windows和Linux上部署C#Windows窗體應用程序
- 12. RoR部署 - 開發Windows/Productiv Linux可能嗎?
- 13. 三星Galaxy S3的Linux開發/部署
- 14. 在Python 3.6.2上部署Django
- 15. Django在Alwaysdata上部署
- 16. 在heliohost上的django部署
- 17. 如何在windows和linux環境下打開文件夾路徑?
- 18. 在Windows上部署Qt dll
- 19. 在Linux中的grep路徑
- 20. 在linux中部署Asp.net mvc
- 21. 在windows上運行android應用程序,在linux上開發
- 22. 在Linux上開發python,在Windows上測試
- 23. 在Windows上開發並在Linux機器上運行
- 24. 在Linux上建立一個開發環境,針對Linux和Windows
- 25. 角2組分上的應用程序相對路徑部署在子路徑
- 26. 如何在亞馬遜Linux上部署Django AMI 64位
- 27. 使用Path.Combine()在Windows系統上形成一個Linux路徑
- 28. file_exists在Windows上爲Linux路徑返回true
- 29. 在Windows 10和Windows 7上部署WPF#
- 30. 如何在Linux上設置類路徑?
這是最好的答案,你可以在windows和linux中使用斜槓。反斜槓是我遇到的最大問題。 – marr75 2010-03-02 14:16:10
你可能想使用'posixpath.join()'而不是'os.path.join()。replace()' - 它使你的意圖清晰:無論你的操作系統是什麼,你都需要一個POSIX風格的路徑。 – 2010-08-27 10:54:52
@CraigTrader:使用'posixpath.join()'是一個不錯的主意,但是它不會刪除已加入路徑組件的反斜槓(例如,從'os.path.dirname(__ file __)')。 – dhobbs 2015-02-25 19:14:12