尝试使用 virtualenv Django 1.4.1

尝试使用 virtualenv Django 1.4.1

我的服务器上有 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?

相关内容