.. _django_env_macos: ======================= 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的 :ref:`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项目的目录下存放),这里和 :ref:`docker_compose_django` 共用 ``requirements.tst`` : .. literalinclude:: ../../docker/applications/requirements.txt :language: bash :linenos: 然后执行以下命令安装:: pip install -r requirements.txt 安装Django =========== 在Python 3的virtualenv环境中,我们可以通过 ``pip`` (也是 ``pip3`` ) 或者 ``pip3`` 命令来安装django:: pip install Django .. note:: 以上默认安装的是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 - firefox: https://github.com/mozilla/geckodriver/releases - 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以及一些开发必要工作。 参考 ===== - `django quick install guide `_