установка Django в virtualenv с помощью pip через proxy с pyenv

Jun 20, 2016 03:05





развернуть
испробовав разные способы я нашёл этот самым оптимальным
при установке через pip3 возникла ошибка:

TypeError: unsupported operand type(s) for -=: 'Retry' and 'int'

причиной оказалась "докембрийская свежесть" пакета:
http://stackoverflow.com/questions/37495375/python-pip-install-throws-typeerror-unsupported-operand-types-for-retry

поначалу возникло желание собрать свой пакет с помощью stdeb

Ставим пакеты stdeb и python-all:
# apt-get install stdeb python-all
Теперь находим архив с нужным нам модулем на pypi.python.org и скачиваем его себе:
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
или
$ wget https://bootstrap.pypa.io/get-pip.py
Теперь можно заглянуть в документацию на stdeb и посмотреть, как это делается.

Распакуем скачанный архив:
$ tar xzvf grab-0.4.12.tar.gz
Перейдём в каталог с распакованным модулем:
$ cd grab-0.4.12
Подготовим каталог и управляющие файлы для сборки пакета:
$ python setup.py --command-packages=stdeb.command sdist_dsc
Теперь перейдём в этот каталог и соберём пакет:
$ cd deb_dist/grab-0.4.12
$ dpkg-buildpackage -us -uc -rfakeroot
В каталоге выше появится готовый deb-пакет, который можно установить в систему.
# dpkg -i python-grab_0.4.12-1_all.deb

http://vladimir-stupin.blogspot.ru/2013/10/deb-python.html

sudo apt-get install python-stdeb
.....
но свежее окружение проще поддерживать стандартными средствами python, чем самому постоянно ваять пакеты ), посему вбил в консоль это и получил нужный мне результат:

sudo apt-get remove python-pip python3-pip
export https_proxy=http://user:password@proxy-server:port ; export http_proxy=http://user:password@proxy-server:port ; export ftp_proxy=$http_proxy
wget https://bootstrap.pypa.io/get-pip.py
curl -O https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py
если ImportError: cannot import name 'sysconfig'
sudo apt-get install python3-distutils
pip install -U pip
pip install -t $HOME/devs/lib/virtualenv virtualenv
chmod +x $HOME/devs/lib/virtualenv/virtualenv.py (для старых версий)
ln -s $HOME/devs/lib/virtualenv/virtualenv.py $HOME/bin/virtualenv (для старых версий)
ln -s $HOME/devs/lib/virtualenv/bin/virtualenv $HOME/bin/virtualenv
echo 'export PYTHONPATH="$HOME/devs/lib/:$PYTHONPATH"' >> $HOME/.profile (или в $HOME/.bashrc)
cd $HOME/devs/virt
virtualenv -p python3 newenv1
source $HOME/devs/virt/newenv1/bin/activate
pip install django
pip install django-admin-tools
django-admin startproject django1
cd django1/
sed -i 's/LANGUAGE_CODE = \x27en-us\x27/LANGUAGE_CODE = \x27ru-ru\x27/' django1/settings.py
python manage.py migrate
python manage.py createsuperuser
x-www-browser 'http://0.0.0.0:8080/admin' &
python manage.py runserver 0.0.0.0:8080

https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/
python3 -m pip install --user virtualenv
python3 -m venv env
source env/bin/activate
deactivate
python3 -m pip install requests

https://docs.python.org/3/tutorial/venv.html
python3 -m venv tutorial-env
source tutorial-env/bin/activate

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
launchpadlib 1.10.13 requires testresources, which is not installed.

sudo apt install python3-testresources

если надо какая нибудь определённая версия Django, то
pip install Django==1.8.18

PS
следуя талмуду http://djbook.ru/rel1.9/intro/
я вводил всякие команды типа

python manage.py startapp polls
python manage.py makemigrations polls
python manage.py migrate
python manage.py check
python manage.py migrate --run-syncdb

и правил конфиги, как в букваре, пока не столкнулся с ошибкой:

url(r'^polls/', include('polls.urls')),
NameError: name 'include' is not defined

вылечилось добавлением этой строки, в файле urls.py, перед urlpatterns

from django.conf.urls import include

в старых версиях лечило

from django.conf.urls.defaults import *

Django 1.9 Flatpages, как настроить URLS?
http://python.su/forum/topic/7746/?page=1#post-51255

быстро подправить базу
python manage.py dbshell
или
sudo add-apt-repository -y ppa:linuxgndu/sqlitebrowser
sudo apt-get install sqlitebrowser

чтобы PyCharm в virtualenv нормально ставил пакеты через proxy:
надо создать файл pycharm, написать в нём:

#!/bin/sh
export https_proxy=http://user:password@proxy-server:port ; export http_proxy=http://user:password@proxy-server:port ; export ftp_proxy=$http_proxy ; $HOME/lib/pycharm/bin/pycharm.sh

положить его в папку $HOME/bin и дать права на выполнение chmod +x
сам архив с программой распаковать в $HOME/lib

---------------------------------------------------------------------------

Flatpages App

1) устанавливаем. как написано тут
https://djbook.ru/rel1.9/ref/contrib/flatpages.html

в settings.py:

INSTALLED_APPS
'django.contrib.sites',
'model1', # подключаемая модель
'django.contrib.flatpages',

MIDDLEWARE добавить прослойку
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',

SITE_ID = 7 # цифра = № сайта. созданного в админ панели, узнать номер можно переходом на этот сайт (№ в адресной строке)

urls.py

from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
url(r'^pages/', include('django.contrib.flatpages.urls')),
url(r'^admin/', admin.site.urls),
]

2) создаём модель
django-admin.py startapp model1
python manage.py migrate

3) создаём в модели папки:
templates, а в ней папку flatpages, в которой создаём файл default.html
как указано тут
https://simpleisbetterthancomplex.com/tutorial/2016/10/04/how-to-use-django-flatpages-app.html







{{ flatpage.title }}
https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">




{{ flatpage.content }}




или напр. так

{% load flatpages %}





{{ flatpage.title }}
https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">




{{ flatpage.content }}




удобный визуальный редактор

https://github.com/ITCase-django/django-tinymce-4

pip install django-tinymce-4

в settings.py

INSTALLED_APPS = (
'tinymce_4',
'grappelli',
'filebrowser',
'django.contrib.admin',
)

в urls.py

url(r'^grappelli/', include('grappelli.urls')),
url(r'^admin/', include([
url(r'^', include(admin.site.urls)),
url(r'^filebrowser/', include(fb_site.urls)),
])),

в models.py

from tinymce_4.fields import TinyMCEModelField
from django.db import models

class ModelFoo(models.Model):
content = TinyMCEModelField('Foo content')

напр в

$HOME/devs/virt/newenv3/lib/python3.4/site-packages/django/contrib/flatpages/models.py

добавить
from tinymce_4.fields import TinyMCEModelField

а
content = models.TextField(_('content'), blank=True)
заменить на
content = TinyMCEModelField(_('content'), blank=True)

https://djbook.ru/forum/topic/1101/

---------------------------------------------------------------------------

напоминание о читабельном коде

$ pip3 install pep8
$ pep8 optparse.py
$ pip3 install autopep8
$ autopep8 --in-place optparse.py
---------------------------------------------------------------------------

Быстрый старт
---------------------------------------------------------------------------
работа с virtualenv

$ git clone https://github.com/username/projectname.git
$ cd projectname
$ virtualenv -p python3 venv
$ source venv/bin/activate
(venv)$ pip install -r requirements.txt
---------------------------------------------------------------------------

cd $HOME/devs/virt
virtualenv -p python3 newenv3
source $HOME/devs/virt/newenv3/bin/activate
pip install --upgrade pip
pip install djangocms-installer # и это подтянет всё остальное по зависимостям, в т.ч и django нужной версии )
pip freeze > requirements.txt
mkdir tutorial-project
cd tutorial-project
djangocms -f -p . mysite
python manage.py createsuperuser
python manage.py runserver

в settings.py

SITE_ID = 2 # чтобы создать ещё сайт, (кроме того что в шаблоне по умолчанию, цифра - количество сайтов)

затем
python manage.py migrate

войти, создать сайт, папку, загрузить туда рисунки, создать фрагмент с фоновым рисунком, создать страницу

затем
dumpdata и loaddata чтобы сдампить одну базу в JSON и восстановить дамп уже на другой базе.

добавление bootstrap3
pip install aldryn-bootstrap3
python manage.py migrate
python manage.py collectstatic
подробно см тут
https://github.com/aldryn/aldryn-bootstrap3

вариант
https://github.com/dyve/django-bootstrap3

http://docs.django-cms.org/en/release-3.4.x/introduction/install.html
http://docs.django-cms.org/en/latest/introduction/index.html
Index of Packages Matching 'djangocms'
https://cdnjs.com/libraries (подключаемые библиотеки )
Как растянуть фон на всю ширину окна?
неподвижный фон при прокрутке страницы html
Как добавить фоновый рисунок на веб-страницу?
Перевод первой части документации Django-CMS
Вторая часть документации по Django CMS
Создание сайта на Django CMS

---------------------------------------------------------------------------

Работа с pip

$ pip help # помощь по доступным командам.
$ pip install package_name # установка пакета(ов).
$ pip install Django==1.8.18 # установка определённой версии пакета.
$ pip uninstall package_name # удаление пакета(ов).
$ pip-autoremove package_name # удаление пакета(ов), с установленными зависимостями
$ pip install -U # обновление пакета(ов).
$ pip install --force-reinstall # при обновлении, переустановить пакет, даже если он последней версии.
$ pip list # Смотрим на список установленных (доступных) библиотек
$ pip list -o # узнать, какие библиотеки можно обновить
$ pip show package_name # узнать версию, местонахождение на диске и зависимости.
$ pip search pycp # покажет список всех пакетов, в названии которых есть pycp
$ pip --proxy user:passwd@proxy.server:port # использование с прокси.
$ pip completion --bash >> ~/.bashrc # Автодополнение
http://asvetlov.blogspot.ru/2014/05/pip.html

Как обновить существующие пакеты? (пользоваться осторожно, лучше в virtualenv )

$ pip install pip-review
$ pip-review --local --interactive
или
$ pip freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U
http://python.cx/blog/article/3
http://xgu.ru/wiki/Работа_с_модулями_в_Python

Удаление ненужных пакетов

$ pip install pip-autoremove
$ pip install Flask Sphinx
$ pip-autoremove Flask Sphinx -y
http://python.cx/blog/article/PyPi_pip_python

При сборке собственных пакетов нужно записать все текущие установленные пакеты в файл с именем requirements.txt
$ pip freeze > requirements.txt

Команда pip установит перечисленные зависимости, переопределяя зависимости, указанные в подпакетах, в том случае, если возникли конфликты.
$ pip install -r requirements.txt

---------------------------------------------------------------------------------

virtualenverapper
http://www.unix-lab.org/posts/virtualenv/
https://russianpenguin.ru/tag/python/

$ sudo apt install virtualenvwrapper

Добавляем в .bashrc

export WORKON_HOME=~/.envs
source /usr/bin/virtualenvwrapper.sh

Применяем изменения
$ source .bashrc

Теперь можно создавать окружения.
$ mkvirtualenv proj_env

Активировать окружения.
$ workon proj_env

Выходить из окружения
$ deactivate

Удалять окружения.
$ rmvirtualenv proj_env

При этом все папки окружений будет расположены в одном месте: папке, которая задана через $WORKON_HOME.

---------------------------------------------------------------------------------

вариант с pyenv (удобно)
https://github.com/pyenv/pyenv-installer
Менеджер версий python
Скрипт создаст указанную директорию, вместе со всеми родительскими директориями, если потребуется, и построит виртуальное окружение.

средствами OS
$ sudo apt-get install python3-venv
$ python3 -m venv $HOME/devs/virt/newenv1
$ pyvenv $HOME/devs/virt/newenv1
$ source $HOME/devs/virt/newenv1/bin/activate

автономная установка (предпочтительней)
Управляем разными версиями python

sudo apt install git

curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash;
echo '# pyenv' >> $HOME/.bashrc; echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> $HOME/.bashrc; echo 'eval "$(pyenv init -)"' >> $HOME/.bashrc; echo 'eval "$(pyenv virtualenv-init -)"' >> $HOME/.bashrc

перезапустить оболочку
$ exec "$SHELL"

Обновление:
$ pyenv update

Удаление:
$ rm -fr ~/.pyenv
и убрать из .bashrc строки (или заккоментить #)

export PATH="~/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

перезапустить оболочку
$ exec "$SHELL"

если
WARNING: `pyenv init -` no longer sets PATH
то убрать из .bashrc и добавить в .profile
https://github.com/pyenv/pyenv

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
echo 'eval "$(pyenv init --path)"' >> ~/.profile

Использование:
$ pyenv
$ pyenv versions
$ pyenv install 3.6.3
$ pyenv versions
$ pyenv global 3.6.3
$ python --version
$ pyenv global 2.7.13

~$ mkdir my-project && cd my-project
~/my-project$ python -V # версия python по-умолчанию
Python 2.7.13
~/my-project$ pyenv local 3.6.3 # меняем версию для директории my-project
~/my-project$ python -V # новая версия
Python 3.6.3
~/my-project$ cd ..
~$ python -V # для остальных директорий ничего не поменялось
Python 2.7.13
~$ ls -la ./my-project
-rw-rw-r-- 1 user user 10 ноя 8 17:18 .python-version
~$ cat ./.python-version
3.6.3

Если в ходе установки в консоли появятся ошибки
значит в системе установлены не все необходимые пакеты. Исправим это, выполнив

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev

если ошибка ModuleNotFoundError: No module named '_lzma'
то
sudo apt-get install lzma
sudo apt-get install liblzma-dev
sudo apt-get install libbz2-dev

Виртуальное окружение
Добавить плагин легко, просто клонируем его из репозитория pyenv-virtualenv или pyenv-virtualenvwrapper:

$ mkdir -p ~/.pyenv/plugins
$ git clone git://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
$ git clone git://github.com/yyuu/pyenv-virtualenvwrapper.git ~/.pyenv/plugins/pyenv-virtualenvwrapper

Пример использования

$ pyenv versions
* system
2.7.5
3.3.2

$ mkdir -p ~/test_project/prj_for_2.7.5 && cd ~/test_project/prj_for_2.7.5
$ pyenv virtualenv 2.7.5 my-virtualenv-2.7.5
$ pyenv local my-virtualenv-2.7.5
$ pip install django==1.4
$ pip freeze
Django==1.4
wsgiref==0.1.2
$ python --version
Python 2.7.5

$ mkdir -p ~/test_project/test_project && cd ~/test_project/test_project
$ pyenv virtualenv 3.3.2 my-virtualenv-3.3.2
$ pyenv local my-virtualenv-3.3.2
$ pip install django==1.5
$ pip freeze
Django==1.5
$ python --version
Python 3.3.2

самый правильный способ
$ pyenv virtualenv virt3.6.3
$ pyenv virtualenvs
$ pyenv shell virt3.6.3
$ pyenv activate virt3.6.3
$ pyenv deactivate
$ pyenv uninstall virt3.6.3

проверка как работает
$ pyenv install 3.6.4
$ pyenv virtualenv virt3.6.4
$ pyenv activate virt3.6.4
$ pip install gunicorn httpbin
$ gunicorn httpbin:app
$ pyenv deactivate
$ pyenv uninstall virt3.6.4
$ pyenv virtualenvs
$ pyenv uninstall 3.6.4
$ pyenv versions

---------------------------------------------------------------------------------

Представляем Pipenv!
https://pypi.org/project/pipenv/
https://pypi.org/project/pipsi/

автоматическая активация виртуальных окружений

https://github.com/kennethreitz/autoenv
https://nolar.info/automatically-activate-virtualenv-on-cd/
https://gist.github.com/nolar/9702618
http://hmarr.com/2010/jan/19/making-virtualenv-play-nice-with-git/
https://github.com/utahta/pythonbrew

http://itnovella.ru/itnovella/2014/01/16/nastroyki-proksi-v-debian-gnu-linux.html
http://pythonworld.ru/osnovy/pip.html
https://pip.pypa.io/en/stable/reference/pip_install/#pip-install-options
https://qa.mchost.ru/q/ustanovka-bibliotek-python-v-domashniy-katalog
http://askubuntu.com/questions/250929/pythonpath-environment-variable
«pip -t» - простая альтернатива virtualenv
Создание deb-пакетов для модулей Python
http://snakeproject.ru/rubric/article.php?art=django19p01
http://defindit.com/ascii.html
Одно-строчные скрипты SED - Ant0
Полезные одно-строчные скрипты sed (sed shell)
http://asvetlov.blogspot.ru/2014/05/pip.html
http://python.cx/blog/article/PyPi_pip_python
http://eax.me/python-virtualenv/
Питон в коробке - venv в python 3.3
https://docs.python.org/dev/library/venv.html
https://khashtamov.com/2015/12/pyenv-python/
http://proft.me/2010/04/3/python-i-okruzhenie-virtualenv/
https://russianpenguin.ru/2015/04/05/разработка-на-python-с-использованием-virtualenv/
http://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html
Современный Python: как начать свой проект с нуля при помощи Pyenv и Poetry

Установка Django CMS в Ubuntu 16.04 64bit
Ленивый деплой Django проекта UWSGI + NGINX (UBUNTU 20.04)
How To Set Up Django with Postgres, Nginx, and Gunicorn on Ubuntu 20.04
Запуск Django сайта на nginx + Gunicorn + SSL
Настройка Debian, Nginx и Gunicorn для Django проекта

https://www.sinyawskiy.ru/feincms.html
http://vits.pro/info/django-cms/
http://cultofdigits.com/articles/django-cms/
12 не годных cms или как я выбирал нам cms на python - и ничего не выбрал.

uzverss Установка веб-фреймворка Django в Ubuntu
uzverss консоль python в роли командной строки

python, #menu, linux, django, pip, proxy, www

Previous post Next post
Up