pyenv virtualenv搭配Django 1.6运行路径异常问题求助
问题解决步骤
确认项目目录已加入sys.path
运行项目前手动把项目根目录添加到Python路径,两种方式选其一:- 在启动脚本(比如manage.py)开头添加代码:
import sys import os # 替换成你的Django项目根目录绝对路径 PROJECT_ROOT = '/Users/userx/path/to/your/project' if PROJECT_ROOT not in sys.path: sys.path.append(PROJECT_ROOT) - 终端启动前临时设置环境变量:
export PYTHONPATH="/Users/userx/path/to/your/project:$PYTHONPATH"
- 在启动脚本(比如manage.py)开头添加代码:
验证virtualenv激活状态
先确认当前终端确实用了目标virtualenv:echo $VIRTUAL_ENV输出应该是你的virtualenv目录路径,再检查Python和pip的路径:
which python which pip结果必须指向virtualenv目录下的可执行文件,不是系统或pyenv全局路径。
切换到项目目录再启动服务
必须先进入Django项目根目录,再执行启动命令:cd /Users/userx/path/to/your/project python manage.py runserver不要在其他目录直接用绝对路径调用manage.py,否则Python不会自动把项目目录加入sys.path。
排查settings文件的代码错误
报错里的No module named objects大概率不是路径问题,而是settings.py里的代码问题。检查settings.py中是否有import objects这类语句——Django1.6没有内置的objects模块,可能是你自定义的模块没放在项目根目录,或者拼写错了模块名。重新初始化pyenv环境
检查shell配置文件(/.bashrc或/.zshrc)里的pyenv初始化代码,确保是:eval "$(pyenv init --path)" eval "$(pyenv virtualenv-init -)"保存后重启终端,重新激活你的virtualenv:
pyenv activate your-2.7-virtualenv-name
内容的提问来源于stack exchange,提问作者Tomas Rezende
相关产品推荐
相关产品推荐

