2009-11-18 69 views
1

我开发了一个python CGI应用程序,它在我的开发框中工作得很好。然而,我的托管服务提供商却对我的服务器几乎没有任何控制权:我在我的python环境中使用了很多自定义的东西(比如sqlalchemy和mako模板),而服务器python版本太旧太旧而无法使用。我的问题是:如何在我的主目录中设置一个独立的,完整的独立Python环境,并安装我所需的模块来运行我的应用程序? ...最简单的方法;)部署python CGI应用程序

+0

你对你的主机有什么控制权?你使用什么服务器?你可以写服务器的任意配置吗?你的主机是什么操作系统和体系结构?这些细节是必要的,但不是获得良好答案的充分条件。 – 2009-11-18 21:49:45

+0

我可以控制我的主目录incl〜/ public_html,我的提供程序使用apache,但我无法访问其主要配置文件,但它对基本CGI进行了配置。主机在x86_64框中安装了一些自定义的linux – akosch 2009-11-19 00:15:02

+0

这将有助于添加问题的标题“在没有python可用的服务器上”。看到这个问题的人谁最好由virtualenv服务,不会看到这个答案,因为你的不寻常的要求。 – 2009-11-19 16:19:32

回答

4

我怎么建立一个独立,完整的,独立的Python环境在我的主目录

  1. mkdir /home/me/.local(如果它不存在。您不必使用.local但它正变得把这)的正常位置
  2. mkdir /home/me/.local/src(同上)
  3. cd /home/me/.local/src
  4. wget http://python.org/ftp/python/2.6.4/Python-2.6.4.tgz
  5. gzip -d Python-2.6.4.tgz
  6. tar xf Python-2.6.4.tar
  7. cd Python-2.6.4
  8. ./configure --prefix=/home/me/.local
  9. make
  10. make install

希望你现在就可以运行Python:

  • /home/me/.local/bin/python

安装你所需要使用通常setup.py脚本包,但你的Python版本:

  • /home/me/.local/bin/python setup.py install

上CGI文件设置hashbang使用Python的您的版本:

  • #!/home/me/.local/bin/python

考虑迁移你的应用程序WSGI如果你能。当然,您现在仍然可以通过CGI使用wsgiref.handlers.CGIHandler来部署WSGI应用程序,但是在将来您的主机环境较差时,您可以使用更简单的服务器接口(如mod_wsgi)进行部署。

+0

从头开始设置python非常感谢:这完美的工作! – akosch 2009-11-19 16:36:42

0

这看起来像virtualenv的工作。来自网站:

另外,如果无法将软件包安装到全局站点包目录中,该怎么办?例如,在共享主机上。

这看起来是你的胡同。

+0

我自己发现了这个,它不是我所需要的:我不想使用系统Python版本......我需要一个独立的环境,使用我自己的Python,而不仅仅是不同的库。 – akosch 2009-11-19 00:21:08

+0

这就是virtualenv的好处。您不必使用系统的Python版本。只要您可以在系统上执行它,您就可以使用任何您想要的Python二进制文件。 Virtualenv允许您为不同项目完全隔离执行环境,或者在此情况下从整个系统执行。你创建的每个virtualenv都是一个完全独立的Python实例。如果您愿意,您可以为每个项目,应用程序或守护进程都有一个。这里是一个视频教程,说明它是多么容易使用:http://showmedo.com/videotutorials/video?name=2910000&fromSeriesID=291 – jathanism 2009-11-19 01:21:14

+0

sry如果我不清楚:我不能使用virtualenv或easy_install,因为他们需要python工作,我没有在该系统上工作的python环境。我需要从我的家庭目录 – akosch 2009-11-19 02:52:24

1

在你的鞋子里,我使用pyinstaller将Python,我的代码和我所有的依赖关系绑定到一个安装程序可执行文件中,然后上传并运行它。只要确保使用pyinstaller的SVN主干 - “发布”版本是WAY过时的。

请注意,使用SQLAlchemy和其他所有工具,使用CGI,您可能会发现您真的很慢,因为您每次访问页面时都会支付全部启动价格。但是,如果CGI是你能负担得起的,我想这就是我会试图应付的方式!)

0

我在Dreamhost的共享计划。除CGI之外,他们还提供FastCGI,这比CGI更快。你应该检查你的主机提供商是否提供。或者他们提供Passenger for Ruby,你可以搭载你的Python。

如果您自己编译Python,请记住UCS设置,如果您尝试安装预编译程序包和体验失败。请参阅StackOverflow article。 Dreamhost的wiki有一些建议,你可以在自己的服务器上自己build and deploy Python;你可能想要适应你的需求。