2016-06-12 4 views
0

Несколько раз мне нужно использовать модули, которые не являются частью стандартной установки python по умолчанию, и иногда даже такие пакеты, как Anaconda или Canopy, не включают их. Поэтому каждый раз, когда я переношу свой проект на другую машину или просто переустанавливаю python, мне нужно загрузить их снова. Так что мой вопрос. Есть ли способ хранить необходимые модули в папке проекта и использовать их из него, не переходя в папку установки python по умолчанию.Хранить модули в папке проекта

+0

Я советую переустановить модули; это относительно быстро и безболезненно с 'pip'. Помещение их в папку с проектом просто в какой-то момент испортит ваш проект и эти модули. Кроме того, вы действительно перемещаете машину или переустанавливаете Python так часто? – Evert

+3

Вам нужно 'pip install requirements.txt' и' virtualenv' – 2342G456DI8

+0

Да, это называется виртуальной средой: http://docs.python-guide.org/en/latest/dev/virtualenvs/ –

ответ

1

Вы можете использовать virtual environment или docker для установки необходимых модулей в проектном каталоге, поэтому он изолирован от вашей системы установки Python. На самом деле вам не нужен Python, установленный на вашем компьютере при использовании докеров.

Вот мой рабочий процесс при разработке веб-приложения Django с Docker. Если в каталоге проекта /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. На оболочке контейнера, установить необходимые пакеты:

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

    The --user варианты наряду с переменной в PYTHONUSERBASE среда make pip устанавливает пакеты в /app/.vendors.

  3. Создание проекта Джанго и разработать приложение, как обычно:

    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 
          ... 
    

Эта конфигурация позволяет устанавливать пакеты в ваш проект, изолированный от вашей системы. Обратите внимание, что вам нужно добавить requirements.txt в свой VCS, но не забудьте исключить .vendors/ реж.

Когда вам нужно переместить и запустить проект на другой компьютер, выполните команду Docker выше и переустановить необходимые пакеты на оболочке контейнера:

pip install -r requirements.txt --user 
Смежные вопросы