将模块存储在项目文件夹中

时间:2016-06-12 04:51:02

标签: python

有些时候我需要使用不属于默认python安装的模块,有时甚至像Anaconda或Canopy这样的软件包都不包含它们。因此,每次我将项目移动到另一台机器或只是重新安装python我需要再次下载它们。所以我的问题是。有没有办法在项目文件夹中存储必需的模块,并从中使用它们,而无需移动到默认的python安装文件夹。

1 个答案:

答案 0 :(得分:1)

您可以使用virtual environmentdocker在项目目录中安装所需的模块,以便与系统Python安装隔离。事实上,在使用docker时,您不需要在计算机上安装Python。

这是我使用Docker开发Django Web应用程序时的工作流程。如果您的项目目录位于/Projects/sampleapp,请将当前工作目录更改为项目目录并运行以下内容。

  1. 从终端运行docker容器:

    docker run \
        -it --rm \
        --name django_app \
        -v ${PWD}:/app \
        -w /app \
        -e PYTHONUSERBASE=/app/.vendors \
        -p 8000:8000 \
        python:3.5 \
        bash -c "export PATH=\$PATH:/app/.vendors/bin && bash"
    
    # Command expalanation:
    #
    # docker run                         Run a docker container
    # -it                                Set interactive and allocate a pseudo-TTY
    # -rm                                Remove the container on exit
    # --name django_app                  Set the container name
    # -v ${PWD}:/app                     Mount current dir as /app in the container
    # -w /app                            Set the current working directory to /app
    # -e PYTHONUSERBASE=/app/.vendors    pip will install packages to /app/.vendors
    # -p 8000:8000                       Open port 8000
    # python:3.5                         Use the Python:3.5 docker image
    # bash -c "..."                      Add /app/.vendors/bin to PATH and open the shell
    
  2. 在容器的shell上,安装所需的包:

    pip install django celery django-allauth --user
    pip freeze > requirements.txt
    

    --user选项以及PYTHONUSERBASE环境变量将使pip在/app/.vendors中安装包。

  3. 创建django项目并照常开发应用程序:

    django-admin startproject sampleapp
    cd sampleapp
    python manage.py runserver 0.0.0.0:8000
    

    目录结构如下所示:

    Projects/
        sampleapp/
            requirements.txt
            .vendors/           # Note: don't add this dir to your VCS
            sampleapp/
                manage.py
                ...
    
  4. 此配置使您可以在项目目录中安装与系统隔离的软件包。请注意,您需要将requirements.txt添加到VCS,但请记住排除.vendors/目录。

    当您需要在另一台计算机上移动和运行项目时,运行上面的docker命令并在容器的shell上重新安装所需的包:

    pip install -r requirements.txt --user