我正在开发本地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