Cal*_* Hu 4 python virtualenv python-2.7
我正在创建一个需要使用python2.7.6的Django应用。我的系统已安装python3.4.1,因此我必须使用安装了python2.7的virtualenv。我使用Pycharm安装了一个virtualenv,并将其命名为django_python_2.7,但是当我在终端中将其激活并运行“ python”时,它仍然表明它正在使用系统的python3.4.1:这是我所做的:
激活环境:
source django_python_2.7/bin/activate
运行python,它显示:
Python 3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 00:54:21) --->这是系统级别的python,而不是virtualenv中安装的一个
但是,当我运行时which python,它显示了指向virtualenv的python版本的正确路径:
/Users/calvinmwhu/....../django_python_2.7/bin/python
Run Code Online (Sandbox Code Playgroud)
当我显式运行该virtualenv中安装的python版本时:
django_python_2.7/bin/python
Run Code Online (Sandbox Code Playgroud)
它显示正确的版本:
Python 2.7.6 (default, Sep 9 2014, 15:04:36)
Run Code Online (Sandbox Code Playgroud)
我不知道是怎么回事。我正在Pycharm IDE中开发此应用程序,但我真的很喜欢在终端中执行命令。但是在终端中,virtualenv没有使用正确版本的python。为什么为什么在virtualenv中运行简单的“ python”命令仍然默认为系统的python?
有人可以提供一些提示吗?是否有必要更改PATH变量以使其包含virtualenv的python的路径?
小智 9
venv如果您更改了venv 目录的任何父文件夹的路径或对其进行了重新命名,那么这将破坏配置的路径,如果是这种情况,您有两个选择:
重新创造它
使用以下命令创建 requests.txt 文件:pip freeze > requirements.txt
删除venv目录:rm -r old-vnev/
python -m venv new-venvsource new-venv/bin/activatepip install -r requirements.txt另一种更简单的方法
old/path/to/your/venv/ correct/path/to/your/venv/之后source new-venv/bin/activate将再次按预期工作。
希望这有帮助!
小智 6
我发现了同样的问题...
就像@skyline75489提到的:
我忘记了我之前为我的 python3 可执行文件指定了一个别名。
我在主目录的 .bash 文件中找到了它并将其删除。
在我的虚拟环境中一切都恢复正常。
如果要更改PYTHONPATHvirtualenv中使用的名称,可以将以下行添加到virtualenv的django_python_2.7/bin/activate文件中
export PYTHONPATH="/path/to/python"
export OLD_PYTHONPATH="$PYTHONPATH"
Run Code Online (Sandbox Code Playgroud)
要在停用时恢复到其原始值,可以在django_python_2.7/bin/postdeactivate脚本中添加以下行。
export PYTHONPATH="$OLD_PYTHONPATH"
Run Code Online (Sandbox Code Playgroud)
否则,env使用
virtualenv -p /usr/bin/python2.7 django_python_2.7
Run Code Online (Sandbox Code Playgroud)