在比较了几款CODE REVIEW的工具之后,决定部署一个Reviewboard。基于PYTHON的环境在WINDOWS下配置是相当的麻烦。在照着文档把每一步做完之后,发现站点还是不能访问。
查看apache的日志后发现如下LOG:
File "C:\\Python27\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\core\\handlers\\wsgi.py", line 250, in __call__, referer:
self.load_middleware(), referer:
File "C:\\Python27\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\core\\handlers\\base.py", line 47, in load_middleware, referer: raise exceptions.ImproperlyConfigured('Error importing middleware %s: "%s"' % (mw_module, e)), referer: ImproperlyConfigured: Error importing middleware reviewboard.admin.middleware: "cannot import name Random",
self.load_middleware(), referer:
File "C:\\Python27\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\core\\handlers\\base.py", line 47, in load_middleware, referer: raise exceptions.ImproperlyConfigured('Error importing middleware %s: "%s"' % (mw_module, e)), referer: ImproperlyConfigured: Error importing middleware reviewboard.admin.middleware: "cannot import name Random",
在翻遍了整个GOOGLE之后,有老外提示是其中的pycrypto编译的包有问题,需要在Windows下重新编译。
于是乎下载了pycrypto2.5的源码。
在WINDOWS下编译,需要Mingw环境,下载Mingw,安装选C编译器就可以。记得把MSYS也勾上。
安装完之后,进入pycrypto的源码目录,执行:
python setup.py build -c mingw32
结果报错如下:
Traceback (most recent call last):
File "setup.py", line 452, in <module>
core.setup(**kw)
File "C:\Python27\lib\distutils\core.py", line 152, in setup
dist.run_commands()
File "C:\Python27\lib\distutils\dist.py", line 953, in run_commands
self.run_command(cmd)
File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "C:\Python27\lib\distutils\command\build.py", line 127, in run
self.run_command(cmd_name)
File "C:\Python27\lib\distutils\cmd.py", line 326, in run_command
self.distribution.run_command(command)
File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "setup.py", line 247, in run
self.run_command(cmd_name)
File "C:\Python27\lib\distutils\cmd.py", line 326, in run_command
self.distribution.run_command(command)
File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "setup.py", line 269, in run
raise RuntimeError("chmod error")
RuntimeError: chmod error
又翻遍了GOOGLE之后,有人提示说要装ActivePerl。切记注意配置环境变量,把ActivePerl的路径放在Mingw之前。
再执行
python setup.py build -c mingw32python setup.py bdist_wininst
运行后,生成pycrypto-2.5.win32-py2.7.exe
安装后,访问reviewboard网站,发现问题依旧。就在我打算放弃的时候,突然看到有人说pycrypto2.5有问题,用低版本的试试。
于是我就下了一个2.2的源码,重新编译。
在执行到python setup.py bdist_wininst时报错
error: Unable to find vcvarsall.bat
解决方法如下:
在python的lib\distutils目录下,找到distutils.cfg文件(如果没有,就创建一个)。加上下面内容:
[build]
compiler=mingw32
compiler=mingw32
再次执行python setup.py bdist_wininst
BUILD成功,BDIST目录下生成.pycrypto-2.2.win32-py2.7.exe安装文件
删了之前的2.5版本,再装这个2.2的版本。
访问网页:
已经正常运行了。还有点CSS的问题,应该是路径的配置。
因为在创建站点的时候,我用了alias指向,需要找到rb站点的conf目录里的settings_local.py文件
在FORCE_SCRIPT_NAME后,加上alias的名称,
FORCE_SCRIPT_NAME = "/review/"
这样再次访问,
OK!
还是有些小问题,至少都是站点配置问题,慢慢改吧。
后面再写一些使用的经验。
为方便大家,我把我编译的安装包放上来。(Python 2.7版本)
另附两个链接:
安装资料
我在rb站点上提交的issue