我开发了一个python CGI应用程序,它在我的开发盒上运行得很好。然而,我的托管服务提供商对我的服务器几乎无法控制:我在我的python环境中使用了很多自定义内容(比如sqlalchemy和mako模板),服务器python版本太旧了,无法使用。我的问题是:如何在我的主目录中设置一个独立的,完整的独立python环境并安装我所需的模块来运行我的应用程序? ......最简单的方法;)
答案 0 :(得分:4)
如何在我的主目录中设置一个隔离的,完整的独立python环境
mkdir /home/me/.local
(如果它尚不存在。您不必使用.local
,但它已成为放置此内容的正常位置)mkdir /home/me/.local/src
(同上)cd /home/me/.local/src
wget http://python.org/ftp/python/2.6.4/Python-2.6.4.tgz
gzip -d Python-2.6.4.tgz
tar xf Python-2.6.4.tar
cd Python-2.6.4
./configure --prefix=/home/me/.local
make
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。当然,您现在仍然可以使用wsgiref.handlers.CGIHandler通过CGI部署WSGI应用程序,但是将来当您拥有一个不那么糟糕的托管环境时,您将能够使用更少浪费的服务器接口进行部署,例如{{ 1}}。
答案 1 :(得分:1)
您可以使用pyinstaller将Python,我的代码和所有依赖项捆绑到一个安装程序可执行文件中,上传并运行它。请务必使用pyinstaller的SVN主干 - “已发布”的版本已过时。
请注意,使用SQLAlchemy和其他所有内容,使用CGI,您可能会发现自己真的很慢,因为每次访问页面时都要支付全部启动价格。但如果你能负担得起CGI,我想这就是我试图应对的方式! - )
答案 2 :(得分:0)
答案 3 :(得分:0)
我正在Dreamhost的共同计划中。除了CGI,它们还提供FastCGI,这使得事情比CGI快得多。您应该检查您的托管服务提供商是否提供。或者也许他们提供Passenger for Ruby你可以用你的Python捎带。
如果您自己编译Python,请记住UCS设置,如果您尝试安装预编译的软件包并遇到故障。请参阅StackOverflow article。 Dreamhost的wiki对你如何build and deploy Python自己在他们的服务器上有一些建议;你可能想要适应你的需要。