在共享主机上安装需要gcc的python模块,没有gcc或root访问权限

时间:2014-10-05 09:00:11

标签: python django gcc hosting virtualenv

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

pip install 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之类的模块,即pip冻结而没有任何virtualenv列出这些模块。但我不能在这个根环境中安装我的其他所需模块,在我的virtualenv中我无法安装mysql-python和pil。可以做点什么吗?我们可以在virtualenv中以某种方式导入/使用root中安装的软件包吗?

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

3 个答案:

答案 0 :(得分:3)

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

  1. on"类似"主持人使用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. 从轮子安装,忽略索引并使用轮子dir:

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

  4. P.S。也许您还应该将download-cache复制到您的主机。我不记得是否需要这个。如果不需要,则可以跳过选项--download-cache /tmp/pip-cache

答案 1 :(得分:1)

  1. 您可以尝试使用PIL而不是Pillow(试一试,但我猜您可能会遇到相同的编译问题)

  2. 设置virtualenv时,可以传递一个--system-site-packages标志。请参阅here

  3. 肯定有很多替代服务 - heroku,数字海洋,webfaction等。用于PythonAnywhere的快速插件(我在这里工作) - 我们是专门针对像Django这样的python框架的PAAS来的预先安装了PIL,mysql-python和许多其他python包。

答案 2 :(得分:0)

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

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

我强烈建议您在DigitalOcean.com上获得VPS。每月5美元,您将获得root权限和更多权力。您还将控制您的完整堆栈。我现在使用Nginx + Gunicorn在DigitalOcean上主持大约10个Django项目。