如何让Apache运行pyc文件(Python编译文件)

2 投票
3 回答
2884 浏览
提问于 2025-04-16 15:23

我在Linux上使用apache2和python2.6。

我知道怎么让apache运行一个*.py文件,只需要在httpd.conf文件中添加“AddHandler cgi-script .cgi .py”。但是,怎么让apache2运行一个*.pyc文件呢?

我尝试添加“AddHandler cgi-script .cgi .pyc”,但没有效果。

我听说mod_python可以让*.pyc和*.pyo文件在apache上运行。有人能告诉我mod_python是怎么做到的吗?

顺便说一下,现在我不想学习mod_python或WSGI……

谢谢大家!

3 个回答

0

在Apache的配置文件中,你需要在虚拟主机(virtualhost)部分添加一些行:

ScriptAlias /cgi-bin/ /usr/bin/
Action cgi-handler /cgi-bin/python3
AddHandler cgi-handler .py .pyc .pyo

<Directory /usr/bin>
  Require all granted
  Options FollowSymLinks
</Directory>

这是一个完整的配置文件示例,文件名是www.domain.com.br.conf,存放在/etc/apache2/sites-enabled/目录下。

DocumentRoot /home/domain.com.br/www/
ServerName domain.com.br
ServerAlias www.domain.com.br

<Directory /home/domain.com.br/www/>
    Options FollowSymLinks MultiViews Includes
    AllowOverride None
    Order allow,deny
    allow from all
    Require all granted
</Directory>

ScriptAlias /cgi-bin/ /usr/bin/
Action cgi-handler /cgi-bin/python3
AddHandler cgi-handler .py .pyc .pyo

<Directory /usr/bin>
  Require all granted
  Options FollowSymLinks
</Directory>

1

应该是可以正常工作的。如果不行,试着从命令行运行那个 .pyc 文件。如果这样也不行,这个超级用户的问题可能会对你有帮助。

除此之外,我想知道为什么不直接使用 Python 的源文件呢?

2

问题在于,httpd(一个网络服务器)不知道怎么运行 .pyc 文件。因为和 .py 文件(它有一个特殊的开头行)不同,.pyc 文件里没有任何关于如何运行它的信息。你需要使用 binfmt_misc 来告诉 Linux 怎么运行 .pyc 文件。而且别忘了要把这个文件本身设置为可执行的。

撰写回答