Django开发环境(macOS)¶
作为Python Web框架,Django需要Python支持才能运行。目前Python 2.x已经终止开发,如果你的项目刚刚开始,请从Python 3开始(Python 3不兼容Python 2)。请首先安装Python 3。
建议从 Python官网下载 最新版本,或者从发行版安装。
对于macOS系统默认安装了Python 2.7为了兼容遗留代码,最新的Catalina(10.15.x)也安装了Python 3,不过需要注意执行命令是 python3
。但是需要注意的是,即使macOS Big Sur 11.1内建的Python 3也不支持GUI的 Python Tkinter ,所以建议从官方网站安装最新版本(包含了完整的库支持)。
也可以通过 Homebrew 安装Python3:
xcode-select --install
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
echo "export PATH=/usr/local/bin:$PATH" >> ~/.bash_profile
brew install python3
安装Virtualenv¶
为了方便使用Python 3,建议通过virtualenv来构建Python运行环境:
sudo pip3 install --upgrade pip
sudo pip3 install virtualenv
# 在Catalina上,使用默认Python3
#/usr/local/bin/virtualenv venv3
# 在早期Mac OS X 10.9(Mavericks),使用Python官方Python3
virtualenv venv3
根据提示,将脚本路径 /Users/huataihuang/Library/Python/3.7/bin
加入环境变量 $PATH
export PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/Users/huataihuang/Library/Python/3.7/bin
然后激活环境变量:
# Catalina系统使用zsh,如果是早期版本,使用 ~/.bash_profile
. ~/.zshrc
再激活Python 3的virutalenv:
. venv3/bin/activate
此时激活了virtualenv环境,则执行 python
指令显示的运行环境就是Python 3。
安装我的常用开发依赖库:即编辑一个
requirements.txt
配置(通常可以在Django项目的目录下存放),这里和 在Docker环境运行Django 共用requirements.tst
:
1sphinx
2sphinx_rtd_theme
3Django
4selenium
5djangorestframework
6markdown
7django-filter
8mysqlclient
然后执行以下命令安装:
pip install -r requirements.txt
安装Django¶
在Python 3的virtualenv环境中,我们可以通过 pip
(也是 pip3
) 或者 pip3
命令来安装django:
pip install Django
备注
以上默认安装的是office release,适合大多数用户。
此外,还可以安装操作系统发行版的Django。(根据发行版不同使用对应的包管理工具安装)
或者安装最新的开发版本:
git clone https://github.com/django/django.git
python -m pip install -e django/
安装以后可以验证所安装的Django版本:
>>> import django
>>> print(django.get_version())
3.0.2
安装Selenium(硒)¶
测试驱动开发模式下,我们安装Selenium来作为浏览器自动化工具:
pip install selenium
测试功能¶
functional_tests.py
from selenium import webdriver browser = webdriver.Firefox() browser.get('http://localhost:8000') assert 'Django' in browser.title
执行:
python functional_tests.py
注意,上述执行的功能测试调用了 webdriver.Firefox()
驱动,所以需要系统中已经安装了Firefox。但是,即使安装了Firefox,依然会报错:
FileNotFoundError: [Errno 2] No such file or directory: 'geckodriver': 'geckodriver'
...
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.
这是因为Selenium需要一个web驱动。所谓的web驱动是一个和web浏览器交互的软件包,可以和本地浏览器或者远程的web服务器通过一种通用协议交互。以下是三种主流的浏览器的web驱动:
chrome: https://sites.google.com/a/chromium.org/chromedriver/downloads
safari: https://webkit.org/blog/6900/webdriver-support-in-safari-10/
在案例中我们使用了firefox的geckodriver,所以下载对应驱动,存放到 $HOME/bin
目录下,然后在个人profile中添加:
export PATH=$PATH:$HOME/bin
加载环境变量之后,再次在virtualenv中执行上述 python functional_tests.py
就会打开Firefox浏览器,访问 http://localhost:8000
OK,现在我们已经就绪了程序开发和运行环境,我们将准备Django的Demo以及一些开发必要工作。