我的服务器上有 Django 1.2.1。我需要使用 Python 来安装 Django 1.4.1 和我想要的 PostgreSQL 适配器。我正在尝试设置这个软件在我的服务器上。所以我运行
virtualenv --python=python2.6 env
. env/bin/activate
pip install -r requirements.txt
输出
:~/arkisto$ virtualenv --python=python2.6 env
Running virtualenv with interpreter /usr/bin/python2.6
New python executable in env/bin/python2.6
Also creating executable in env/bin/python
Installing distribute..................................................................................................................................................................................done.
:~/arkisto$ . env/bin/activate
(env):~/arkisto$ pip install -r requirements.txt
Requirement already satisfied (use --upgrade to upgrade): psycopg2 in /usr/lib/python2.6/dist-packages (from -r requirements.txt (line 2))
Downloading/unpacking django==1.4.1 (from -r requirements.txt (line 1))
Downloading Django-1.4.1.tar.gz (7.7Mb): 7.7Mb downloaded
Running setup.py egg_info for package django
Installing collected packages: django
Found existing installation: Django 1.2.3
Not uninstalling Django at /usr/lib/pymodules/python2.6, outside environment /home/users/sa/tentti/env
Running setup.py install for django
changing mode of build/scripts-2.6/django-admin.py from 644 to 755
changing mode of /home/users/sa/arkisto/env/bin/django-admin.py to 755
Successfully installed django
Cleaning up...
然后查看服务器中的 Django 版本
(env)$ django-admin --version
1.2.3
如何使用这些命令安装的软件?
答案1
在 virtualenv 中通过 pip 安装时,django 管理脚本通常会安装在名称django-admin.py
(带有文件扩展名) 下。系统范围的 django 很可能安装了此脚本而没有扩展名,因此您将返回到它。
尝试
$ django-admin.py --version
答案2
根据您的 virtualenv 版本,您可能需要在创建 venv 时添加 --no-site-packages 标志,如下所示:
virtualenv --python=python2.6 --no-site-packages env
这会告诉 virtualenv 不要让全局安装的包在你的 venv 中可用。
答案3
延伸至用户214462回答
我运行用户214462的答案
virtualenv --python=python2.6 --no-site-packages env
我明白了
Running virtualenv with interpreter /usr/bin/python2.6
The --no-site-packages flag is deprecated; it is now the default behavior.
Overwriting env/lib/python2.6/site.py with new content
New python executable in env/bin/python2.6
Not overwriting existing python script env/bin/python (you must use env/bin/python2.6)
Overwriting env/lib/python2.6/distutils/__init__.py with new content
Installing distribute..............................................................................................................................................................................................done.
Installing pip................done.
Overwriting env/bin/activate with new content
Overwriting env/bin/activate_this.py with new content
似乎有效。
答案4
对 user214462 答案的第二次扩展
我正在尝试结合 virtualenv 命令来安装 Django1.4.1
virtualenv --python=python2.6 --no-site-packages env python setup.py install test/
我不明白语法。我把文件夹测试/因为我在没有文件夹的情况下运行它后也得到了以下错误
Running virtualenv with interpreter /usr/bin/python2.6
There must be only one argument: DEST_DIR (you gave setup.py install env test/)
Usage: virtualenv.py [OPTIONS] DEST_DIR
我认为我应该启动虚拟环境,然后在同一行中放置要在环境中运行的内容。
上面的语法感觉不对,因为该命令python
显然不是虚拟运行的,所以不起作用。
如何在不使全局安装的包在 venv 中可用的情况下安装 Django1.4.1?