我是Django和Python安装的新手。中级的Ubuntu 14.04。
到目前为止,这些是我在Ubuntu 14.04中的安装。
apt-get install python3-setuptools --force-yes -y ## for python3
easy_install3 pip ## for python3
apt-get install python-setuptools --force-yes -y ## for python2.7 or above
easy_install pip ## for python2.7 or above
apt-get install python-dev --force-yes -y ## because ubuntu 14.04 does not have dev version of python 2
apt-get install python3-dev --force-yes -y ## because ubuntu 14.04 does not have dev version of python 3.4
apt-get install links --force-yes -y ##a command line web browser
apt-get install python-flup --force-yes -y ## connects python to uwsgi)
apt-get install build-essential --force-yes -y ##
pip2 install django uwsgi virtualenv ## use pip to install django and uwsgi and virtualenv for python2
pip3 install django uwsgi ## use pip to install django and uwsgi for python3
有关完整列表,请查看https://gist.github.com/simkimsia/41c55e0c08eda42e2cb3#file-install-sh-L88
我对
virtualenv
的使用感到困惑。我想为Django 1.7的生产水平准备尽可能多的ubuntu 14.04服务器版本。
之所以安装多个Python环境是因为我可能正在运行需要3.4的其他Python应用。
我的Django文件来自bitbucket存储库,我已经git将它们克隆到
/var/virtual/WebApps/DjangoProject
中在
/var/virtual/WebApps/DjangoProject
内部,我有manage.py以及其他文件和文件夹。请告知我如何在这种情况下运行Django项目。
我目前正在我的virtualbox和vagrant上测试此设置。
编辑
至少会有2个Django应用程序。 1需要2.7 python。另一个需要3.4 python。
让我补充一点,这是一台将托管应用程序,前端和数据库的服务器。
编辑1
我从全新安装的Ubuntu 14.04重新开始,并从Python 2.7.6和Python 3.4.0开始。
然后,我做了
sudo apt-get install python-virtualenv
,检查了它的版本:1.11.4
。我创建了
~/virtualenvs/py2.7
和~/virtualenvs/py3.4
。在
~/virtualenvs
内部,我做了virtualenv -p /usr/bin/python2 py2.7
和~/virtualenvs
,我做了virtualenv -p /usr/bin/python3 py3.4
那么,如何为python 2应用安装仅python2库?
例如。是
django-adminfiles
,sorl-thumbnail
,psycopg2
编辑5
改用
virtualenv --system-site-packages -p /usr/bin/python2 py2.7
最佳答案
I have restarted with a fresh install of Ubuntu 14.04 and I started with Python 2.7.6 and Python 3.4.0.
好的,现在您的系统中有两个Python的基本版本。基本版本仅表示操作系统支持的版本。您已在全局范围内安装。
换句话说,您已经使用操作系统的软件包安装程序安装了它们,并且没有单独编译它们。
实际上,以上内容仅在Linux中很重要,因为在Windows中,如果不经过几个步骤就无法“本地”安装。所有Python安装程序都会在注册表中注册自己,从而使它们成为全局的基本Python版本。
I then did sudo apt-get install python-virtualenv which I checked its version: 1.11.4.
该软件包已过时(当前版本为
12.0.7
)。现在,您已经针对python 2基本版本安装了虚拟环境,因为package requires Python 2。
实际上,这意味着如果您需要升级Python 2,则必须确保针对操作系统支持的两个Python的基本版本也更新了
python-virtualenv
。这意味着,当您使用apt-get update
和apt-get upgrade
时,virtualenv
将被升级。通常,这无关紧要,因为如果
python2
升级了,然后又没有升级python-virtualenv
以匹配其依赖项,则这种情况很少见。但是,不建议这样做,因为您希望“手动”控制关键软件的版本,以避免任何意外。 pinning versions有一些方法可以在Ubuntu和其他类似debian的发行版上进行控制;但是即使这样做,您也可能无法获得该库的最新版本,这可能会迫使您稍后卸载操作系统随附的版本,然后从源代码中重新安装它。
I have created ~/virtualenvs/py2.7 and ~/virtualenvs/py3.4.
Inside ~/virtualenvs, I did virtualenv -p /usr/bin/python2 py2.7 and ~/virtualenvs, I did virtualenv -p /usr/bin/python3 py3.4
So how do I install python2 only libraries for the python 2 app?
E.g. are django-adminfiles, sorl-thumbnail, psycopg2
为了正确安装
solr-thumbnail
和psycopg2
,您需要构建它们之间的依赖关系。所以sudo apt-get install libjpeg62 libjpeg62-dev zlib1g-dev
sudo apt-get install libgraphicsmagick++-dev libboost-python1.55-dev
sudo apt-get install libexpat1-dev libpython-dev libpython3-dev libssl-dev libpq-dev
要为Python 2应用安装库:
source ~/virtualenvs/py2.7/bin/activate
pip install _____
(库名)支持具有不同主要版本的多个Python应用程序;您的系统应同时安装两个Python主版本(您已经完成了此操作)。
然后为每个Python主版本安装virtualenv。如果您的应用程序已被完全包含(也就是说,它们包括所需的Python运行时-但这是极少数情况),或者您只有一台目的服务器,则可以跳过此步骤。
您应该避免在系统的全局python中安装除基本Python库以外的任何内容。那是避免(以root或使用sudo)来
pip install
东西;因为这些将为所有Python用户安装,并且可能会引起问题(在某些系统上;例如Fedora / RedHat-像yum
这样的关键系统软件包依赖于基本系统Python)。下一步是确保您拥有合适的构建环境。这意味着来自Debian的系统将安装
build-essential
,并进一步扩展常见Python驱动程序和模块的支持库。您需要安装的确切库将取决于您计划托管的应用程序,但至少应确保可以安装PIL
(或Pillow
)并且数据库驱动程序的支持库可用。为此,您可以apt-get build-deb python-imaging psycopg2 python-mysqldb
(对于PostgreSQL,MySQL和PIL)。现在,您已经可以使用系统来支持大多数Python应用程序。然后,您可以选择添加其他实用程序,但我会尽量避免过多地假设应用程序将需要什么。
托管应用程序:
supervisord
。 那就是你要做的。其他所有内容都取决于单个应用程序的要求和设置(因此,如果需要提供静态文件,则必须配置该映射等)。
阅读完shell script之后,您似乎正在尝试构建一台同时支持应用程序,前端和数据库的服务器。
为了支持这样的系统;您将需要安装以下内容:
git
等)supervisor
或 circus
)。 sudo apt-get install python-dev
)setuptools
, pip
,然后是 virtualenv
。这些工具应从源安装,而不是从软件包管理器安装。以确保安装了最新版本。您应该全局安装这些(即,以root用户身份),以便所有用户都可以使用它们。 build-essential
)sudo apt-get build-dep python-imaging psycopg2 python-mysqldb
来构建依赖关系。 接下来需要做的是确定如何运行应用程序服务器(“django代码”)。您可以使用
uwsgi
,gunicorn
等,因为这些是使用django测试最多的。您需要能够支持这些运行时的多个版本,而不是在整个系统中全局安装它们。只需构建其依赖项,然后在每个应用程序各自的隔离环境中安装所需的特定版本。
接下来需要安装的是应用程序的前端代理。您可以安装任何适合您需要的代理(nginx是最受欢迎的代理);但请从源进行安装,而不要从软件包中安装,因为它们几乎总是过时的。
设置完所有这些之后,托管django应用程序的过程如下:
env
。 $HOME/www/static
。 您可以自动执行/编写许多上述内容。例如,当添加新用户时,您可以创建custom skeleton directory来为您创建基本目录。并且您可以使用
cookiecutter
之类的工具为其他区域创建自定义模板。
关于django - 如何在安装了python 3.4的情况下使用python 2.7在nginx和virtualenv上使Django 1.7在Ubuntu 14.04上正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28271119/