【发布时间】:2014-05-21 11:15:28
【问题描述】:
也许我在这里遗漏了一些东西,但我正在按照 Dreamhost 文档中的说明安装自定义 Python 解释器。我怀疑 Python 2.x -> Python 3.x 中的 execl() 存在问题,但我不能确定。
http://wiki.dreamhost.com/Python#Building_a_custom_version_of_Python
这是我遇到的问题。似乎同一个解释器运行了两次,即使我告诉了它别的东西。
import os, sys
log = file('/home/user/mysite.com/passengerwsgi.log', 'a')
log.write("Running %s\n" % (sys.executable))
log.write("Python %s\n" % (sys.version))
log.write("Path %s\n" % (sys.path))
INTERP = "/home/user/Python-3.3.5/bin/python3.3"
PACKAGES = "/home/user/mysite.com/packages"
if sys.executable != INTERP:
log.write("Detected wrong interpreter location, swapping to %s\n" % (INTERP))
# Swapping interpreters will not flush any files.
log.flush()
log.close()
os.execl(INTERP, INERP, *sys.argv)
# Should resume execution from the top of the file.
log.write("Loading pypiserver...")
log.flush()
sys.path.append(os.getcwd())
import site
import pypiserver
application = pypiserver.app(PACKAGES, redirect_to_fallback=False)
当它运行时,我得到了可怕的 500 服务器错误,但我指定的解释器似乎并没有像此输出所指示的那样实际运行。如果我指定了一个错误的解释器路径,它会完全失败,正如我所期望的那样。
> Running /usr/bin/python Python 2.6.6 (r266:84292, Dec 26 2010,
> 22:31:48) [GCC 4.4.5] Path
> ['/usr/local/dh/passenger/lib/phusion_passenger/wsgi',
> '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2',
> '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old',
> '/usr/lib/python2.6/lib-dynload',
> '/usr/local/lib/python2.6/dist-packages',
> '/usr/lib/python2.6/dist-packages',
> '/usr/lib/python2.6/dist-packages/PIL',
> '/usr/lib/pymodules/python2.6'] Detected wrong interpreter location,
> swapping to /home/user/Python-3.3.5/bin/python3.3 Running
> /usr/bin/python Python 2.6.6 (r266:84292, Dec 26 2010, 22:31:48) [GCC
> 4.4.5] Path ['/usr/local/dh/passenger/lib/phusion_passenger/wsgi', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2',
> '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old',
> '/usr/lib/python2.6/lib-dynload',
> '/usr/local/lib/python2.6/dist-packages',
> '/usr/lib/python2.6/dist-packages',
> '/usr/lib/python2.6/dist-packages/PIL',
> '/usr/lib/pymodules/python2.6'] Detected wrong interpreter location,
> swapping to /home/user/Python-3.3.5/bin/python3.3
为什么会执行两次 /usr/bin/python 解释器?
【问题讨论】:
-
您在
os.execl(INTERP, INERP, *sys.argv)中第二次出现拼写错误INTERP -
我想我在发布此内容时不小心按了退格键。我确实在脚本中正确拼写了它,但它仍然不起作用。另外,这将给出一个不同的例外。
标签: python passenger dreamhost