在托管服务器上安装Python + Jinja2 + WSGI

2 投票
1 回答
758 浏览
提问于 2025-04-18 04:50

我能否在只能通过cPanel访问的托管服务器上安装Jinja2并创建一个WSGI网页应用?

我创建了一个简单的CGI Python页面,并尝试使用from jinja2 import Template,但出现了错误No module named jinja2,意思是找不到Jinja2这个模块。

我尝试使用[这个命令行工具][1]来运行easy_install Jinja2。命令行工具可以用,easy_install也能运行,但它显示can't create or remove files in install directory,也就是不能在安装目录创建或删除文件(这也是我预料中的结果)。

至于WSGI,我甚至不知道该从哪里开始。我找到的任何安装和配置的参考资料都只适用于我自己的服务器,而不适用于托管服务器。

1 个回答

0

这是我经过一些研究后发现的内容。

在一个托管服务器上,安装任何会干扰Apache的东西都是不可能的。比如,像Mod_python或CherryPy这样的东西是无法安装的,因为它们需要修改Apache的配置。

而且,使用pip或easy_install也无法安装像Jinja这样的Python包。

不过,可以通过把源文件复制到用户有权限访问的任何文件夹,然后告诉Python从那个文件夹导入Jinja来安装它。

如果用pip或easy_install安装,依赖关系会自动处理,但手动复制文件就不会。所以所有的依赖项也必须手动复制。

我发现的最后一个问题是,Jinja需要一个叫做pkg_resources的模块,而这个模块是通过easy_install安装的,但我们不能使用它(见上文)。解决办法是创建一个自定义加载器。我从文档中复制了一个,效果很好。

以下是我遵循的步骤:

  1. 创建一个名为lib的文件夹
  2. 下载Jinja并将其复制到lib/jinja2文件夹中
  3. 下载MarkupSafe并将其复制到lib/markupsafe文件夹中
  4. lib文件夹添加到导入路径:sys.path.insert(0, "lib")
  5. 像往常一样导入Jinja:import jinja2
  6. 按照这里的建议创建一个自定义加载器

然后我用cPanel给lib文件夹加了密码保护,并安装了Peewee和其他包。

我真的很想使用CherryPy,但对于我这个小流量的网站来说,这样就够了。

撰写回答