【问题标题】:installing python modules that require gcc on shared hosting with no gcc or root access在没有 gcc 或 root 访问权限的共享主机上安装需要 gcc 的 python 模块
【发布时间】:2014-11-29 19:43:47
【问题描述】:

我正在使用 Hostgator 共享作为生产环境,但在使用后安装一些 python 模块时出现问题:

pip 安装 MySQL-python

pip 安装枕头

结果:

无法执行 gcc:权限被拒绝 错误:命令“gcc”失败,退出状态为 1

服务器限制

  • 没有root权限
  • sudo不起作用(sudo:有效uid不为0,sudo是否安装了setuid root?)
  • 没有 gcc

问题

  1. 是否有替代枕头包装。我希望它使用 django ImageField。 (就像 pymysql 是 mysql-python 的替代品一样)

  2. 我在 root 中安装了 mysql-python 和 pil 等模块,即没有任何 virtualenv 的 pip freeze 会列出这些模块。但我无法在这个根环境中安装我的其他必需模块,在我的 virtualenv 中我无法安装 mysql-python 和 pil。可以做些什么吗?我们可以在 virtualenv 中以某种方式导入/使用安装在 root 中的包吗?

  3. hostgator 共享只对 PHP 有好处,对 python/django webapps 没有好处。我们的流量有限,所以我们使用 hostgator shared。我们应该避免使用 hostgator 还是共享主机?它们对 python/django 来说还不够好(我在托管静态/PHP 站点方面没有问题)。它们是太多的问题和限制还是性能问题(FCGI)?如果是,有哪些替代方案?

【问题讨论】:

  • 如果您的流量有限且网站较小,您可能需要考虑Heroku's free plan
  • 大约。 heroku free 每月可以提供多少浏览量?是 fcgi 还是 wsgi?
  • 在此处检查此过程:community.webfaction.com/questions/7340/…,或者您可以尝试将已编译的枕头/鸡蛋文件夹从 ~usr/lib/python2.7/site-packages 复制/粘贴到 ~virtualenv/lib/ python2.7/site-packages

标签: python django gcc hosting virtualenv


【解决方案1】:

您需要 root 权限才能安装必要的包来运行您的 python 应用程序。

像 Heroku 这样的 PAAS 是另一种选择,但 Heroku 的免费软件包仅适用于开发您的应用程序,它不适用于在您获得流量和用户后托管它。

我强烈建议您在 DigitalOcean.com 上获得 VPS。每月 5 美元,您将获得 root 访问权限和更多功能。您还将控制您的全部筹码。我现在使用 Nginx+Gunicorn 在 DigitalOcean 上托管了大约 10 个 Django 项目。

【讨论】:

  • 例如,仅 Ubuntu 就需要大约 2GB 的 RAM。 Digital Ocean 定价为每个“液滴”5 美元,其中液滴仅包含 0.5GB。他们根本不鼓励使用任何交换,因为这会磨损他们的 SSD。是吗?
  • 不,我已经在 512M 的 RAM 小滴上运行了完整的 Django 应用程序和活动用户。但是随着应用程序变得越来越大,您将需要更多的内存
  • 谢谢威廉...我试试看。
【解决方案2】:
  1. 您可以尝试使用 PIL 代替 Pillow(尝试一下,但我猜您可能会遇到相同的编译问题)

  2. 当你设置你的 virtualenv 时,你可以给它传递一个 --system-site-packages 标志。见here

  3. 肯定有很多可供选择的服务——heroku、数字海洋、webfaction 等。PythonAnywhere 的快速插件(我在这里工作)——我们是专门针对 Django 等 python 框架的 PAAS预装了 PIL、mysql-python 和许多其他 python 包。

【讨论】:

    【解决方案3】:

    您可以尝试在 gcc 可用的类似主机上构建wheels,将它们复制到您的服务器并安装。但是我不知道应该有多少相似的主机。

    1. 使用 gcc 在“类似”主机上:

      mkdir /tmp/wheels mkdir /tmp/pip-cache pip wheel --download-cache /tmp/pip-cache -w /tmp/wheels -r requirements.pip

    2. 复制轮子到你的主机(我假设你复制到/tmp/wheels

    3. 从轮子安装忽略索引并使用轮子目录:

      pip install --download-cache /tmp/pip-cache --find-links=/tmp/wheels --no-index -r requirements-dev.pip

    附:也许您还应该将下载缓存复制到您的主机。我不记得这是否需要。如果不需要,则可以跳过选项--download-cache /tmp/pip-cache

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-19
      • 1970-01-01
      • 2013-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-02
      • 1970-01-01
      相关资源
      最近更新 更多