【问题标题】:How to install Django with pip inside a virtualenv in /var/www/html/project_name folder?如何在 /var/www/html/project_name 文件夹中的 virtualenv 中使用 pip 安装 Django?
【发布时间】:2015-09-22 08:39:54
【问题描述】:

我正在使用 Ubuntu 15.04 和 Python 2.7、pip 1.5.6 和 virtualenv 1.11.6。

我将在 /var/www/html/project_name 中创建一个 Django 项目(并在该目录中工作),以便与 Apache2 一起使用。

我在 project_name 文件夹中创建了一个名为 venv 的虚拟环境用于同步目的。

激活虚拟环境后,我无法运行pip install django,因为我收到“权限被拒绝”消息。所以我尝试了命令sudo pip install django,但这将全局安装Django。

所以,运行which pip,我得到/var/www/html/project_name/venv/bin/pip

但是运行sudo which pip,我得到/usr/bin/pip

有人知道如何在虚拟环境中安装 Django(或任何其他包)吗?

PS:我知道可以运行sudo venv/bin/pip install django,但它似乎不是很有用。

【问题讨论】:

  • 你为什么不给自己/var/www/html/project_name/venv/的写权限?
  • Install pip in your system, not virtual env 并使用 pip install django 运行它
  • 您应该将 Django 或您的项目放在 /var/www 中。
  • @DanielRoseman 为什么不呢?我的 virtualenvs 和项目总是在那里
  • 谢谢你,@VasilyAlexeev!我会试试你的建议。

标签: python django ubuntu pip virtualenv


【解决方案1】:

您的问题可能是您没有对此/var/www/html/project_name 目录的写入权限。您的选择是:

  1. 以递归方式更改权限,以便您确实有权写入该目录。

  2. 运行以下命令:

.

$ sudo su
# . venv/bin/activate
# pip install

只是为了补充大家一直在说的内容,我略读了一下:永远不要将敏感的东西(包括您的 django 项目)放在文档根目录下。你可以将它存储在/var/www/scripts 之类的东西下,但不要放在文档根目录下。

另一种部署方式是使用 gunicorn 之类的东西作为“主”网络服务器,然后将任何世界可见的网络服务器(如 apache)反向代理到 gunicorn。我已经用 nginx 完成了这项工作,而且设置起来相当容易,唯一的缺点是你必须在系统的初始化脚本中设置一些额外的东西才能启动 gunicorn。

【讨论】:

  • 虽然这应该可行,但您可能需要考虑创建一个服务用户来部署您的项目。虽然这是一个更大的话题,但值得研究。我在我的主目录(virtualenvs 和所有)中开发我的 Django 项目。当我部署时,我有一个流程可以从 git 生产分支部署到与 Apache 相同的用户下的 /var/www/html/project_name,对需求文件进行 pip 安装,收集静态文件等。执行 不要将你的整个 Django 项目放在 /var/www/html 下 - 这是世界可读的,并且可能导致诸如设置文件(带密钥)之类的东西变得可读。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-25
  • 2016-06-13
  • 1970-01-01
  • 2011-12-20
  • 1970-01-01
  • 2021-01-19
相关资源
最近更新 更多