IOError: [Errno 2] No such file or directory: '/var/www/.virtualenvs/exampleenv/bin/activate_this.py")

IOError: [Errno 2] No such file or directory: '/var/www/.virtualenvs/exampleenv/bin/activate_this.py")

我已经使用 virtualenv 在 vps 上部署了一个 django 应用程序。下面是放在/var/www/example.wsgi

的wsgi文件内容
import os
import sys
import site
# Add the site-packages of the chosen virtualenv to work with
site.addsitedir('~/.virtualenvs/exampleenv/local/lib/python2.7/site-packages')
# Add the app's directory to the PYTHONPATH
sys.path.append('/var/www/example')
sys.path.append('/var/www/example/example')
os.environ['DJANGO_SETTINGS_MODULE'] = 'example.settings'
# Activate your virtual env
activate_env=os.path.expanduser("~/virtualenvs/exampleenv/bin/activate_this.py")
execfile(activate_env, dict(__file__=activate_env))
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

但是 error.log 文件显示以下错误。

IOError: [Errno 2] No such file or directory: '/var/www/.virtualenvs/exampleenv/bin/activate_this.py")

它正在 /var/www 中寻找 virtualenv 而不是 ~/.virtualenv/.....

我已经检查了 exampleenv 的路径存在于 ~/.virtualenvs/exampleenv

该应用程序可能 运行 作为不同的用户(主目录是 /var/www/),因此 expanduser 函数将使用它的主目录而不是您的主目录。

将其他用户的文件放在您的主目录中不是一个好习惯。尝试将 virtualenv 放入 /var/www/<your_app>/.venv/var/www/.<your_app>_venv.