Question : Using modpython_gateway for using HG with Apache

Hello,

I installed Mercurial (HG) on my Fedora Core 10 32-bit system. I was successfully able to create a file and add it to the repository.

Now I'm trying to publish the repository with HTTP. I used the following guide:

http://www.aventinesolutions.nl/mediawiki/index.php/Quick_Tip:_Getting_Started_with_Mercurial#Getting_hgwebdir_Going

However, I keep getting the following error when opening http://hg.xxxxxxxxxx/ in my browser.:


MOD_PYTHON ERROR

ProcessId:      21962
Interpreter:    'hg'

ServerName:     'hg'
DocumentRoot:   '/srv/mercurial'

URI:            '/'
Location:       '/'
Directory:      None
Filename:       '/srv/mercurial/'
PathInfo:       ''

Phase:          'PythonHandler'
Handler:        'modpython_gateway::handler'

Traceback (most recent call last):

  File "/usr/lib/python2.5/site-packages/mod_python/importer.py", line 1537, in HandlerDispatch
    default=default_handler, arg=req, silent=hlist.silent)

  File "/usr/lib/python2.5/site-packages/mod_python/importer.py", line 1202, in _process_target
    module = import_module(module_name, path=path)

  File "/usr/lib/python2.5/site-packages/mod_python/importer.py", line 304, in import_module
    return __import__(module_name, {}, {}, ['*'])

ImportError: No module named modpython_gateway


modpython_gateway.py is located in /srv/mercurial.
There's an .htpasswd file in /srv/trac/argon
httpd.conf includes all *.conf files in /etc/httpd/vhosts (works correct)


What am I doing wrong?

Thanks in advance
Code Snippet:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
============== /srv/mercurial/hgweb.config ==============
[collections]
argon\ = argon/
 
 
============== /srv/mercurial/hgwebdir.py ==============
#!/usr/bin/env python
#
# $Id: hgwebdir.py 1478 2008-11-21 11:09:22Z matthew $
#
# An example CGI script to export multiple hgweb repos, edit as necessary
 
# adjust python path if not a system-wide install:
#import sys
#sys.path.insert(0, "/path/to/python/lib")
 
# Uncomment to send python tracebacks to the browser if an error occurs:
import cgitb
cgitb.enable()
 
# enable importing on demand to reduce startup time
# from mercurial import demandimport; demandimport.enable()
# from mercurial import demandload; demandload.enable()
 
# If you'd like to serve pages with UTF-8 instead of your default
# locale charset, you can do so by uncommenting the following lines.
# Note that this will cause your .hgrc files to be interpreted in
# UTF-8 and all your repo files to be displayed using UTF-8.
#
#import os
#os.environ["HGENCODING"] = "UTF-8"
 
from mercurial.hgweb.hgweb_mod import hgweb
from mercurial.hgweb.hgwebdir_mod import hgwebdir
from mercurial.hgweb.request import wsgiapplication
 
# The config file looks like this.  You can have paths to individual
# repos, collections of repos in a directory tree, or both.
#
# [paths]
# virtual/path = /real/path
# virtual/path = /real/path
#
# [collections]
# /prefix/to/strip/off = /root/of/tree/full/of/repos
#
# collections example: say directory tree /foo contains repos /foo/bar,
# /foo/quux/baz.  Give this config section:
#   [collections]
#   /foo = /foo
# Then repos will list as bar and quux/baz.
#
# Alternatively you can pass a list of ('virtual/path', '/real/path') tuples
# or use a dictionary with entries like 'virtual/path': '/real/path'
 
# application = hgwebdir('hgweb.config')
# wsgicgi.launch(application)
 
def make_web_app():
    return hgwebdir("/srv/mercurial/hgweb.config")
 
def gateway(environ, start_response):
    app = wsgiapplication(make_web_app)
    return app(environ, start_response)
 
#
### EOF: $HeadURL: http://aventinesolutions.mine.nu/repos-nossl/config/httpd/hgwebdir.py $
 
 
 
============== /etc/httpd/vhosts/hg.conf ==============

        DocumentRoot /srv/mercurial
        ServerName hg
        ServerAlias hg hg.xxxxxxxxxxxxxxxxx
        CustomLog /var/log/httpd/domains/hg.bytes bytes
        CustomLog /var/log/httpd/domains/hg.log combined
        ErrorLog /var/log/httpd/domains/hg.error.log
 
        
                PythonPath "sys.path + [ '/srv/mercurial' ]"
                PythonDebug On
                SetHandler mod_python
                PythonHandler modpython_gateway::handler
                PythonOption SCRIPT_NAME /
                PythonOption wsgi.application hgwebdir::gateway
                AuthType Basic
                AuthName "Argon"
                AuthUserFile /srv/trac/argon/.htpasswd
        
Open in New Window Select All

Answer : Using modpython_gateway for using HG with Apache

I managed to fix the issue by moving the files modpython_gateway.py and hgwebdir.py to /usr/lib/python2.5/site-packages.
Random Solutions  
 
programming4us programming4us