python使用不正确的路径

时间:2013-10-06 21:02:59

标签: python bash virtualenv

我有运行Python程序的bash脚本。我使用virtualenv。

我首先将env包含在bash中:

source ./ENV/bin/activate

然后我在bash提示符中看到(ENV)前缀。

$ echo $PATH
/project/ENV/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/core_perl

当我尝试从bash脚本运行我的Python程序时,它运行的是错误版本的Python。 ENV使用Python 2.6,而系统默认使用3.2。

我从Python脚本打印Python版本,它打印3。

但为什么?

ls -la
-rw-r--r-- 1 wnc wnc 2219 Sep 27 01:42 activate
-rw-r--r-- 1 wnc wnc 1275 Sep 27 01:42 activate.csh
-rw-r--r-- 1 wnc wnc 2414 Sep 27 01:42 activate.fish
-rw-r--r-- 1 wnc wnc 1129 Sep 27 01:42 activate_this.py
-rwxr-xr-x 1 wnc wnc 357 Sep 27 01:42 easy_install
-rwxr-xr-x 1 wnc wnc 365 Sep 27 01:42 easy_install-2.6
-rwxr-xr-x 1 wnc wnc 318 Sep 27 01:42 pip
-rwxr-xr-x 1 wnc wnc 326 Sep 27 01:42 pip-2.6
lrwxrwxrwx 1 wnc wnc 9 Sep 27 01:42 python -> python2.6 
lrwxrwxrwx 1 wnc wnc 9 Sep 27 01:42 python2 -> python2.6
-rwxr-xr-x 1 wnc wnc 6240 Sep 27 01:42 python2.6

1 个答案:

答案 0 :(得分:1)

完整性检查:

source /path/to/ENV/bin/activate
python -V
deactivate
python -V

第一个python -V应该显示打印Python 2.6而第二个Python 3.2应该显示,对吗?

当你运行你想要使用上述virtualenv的Python脚本时,请确保首先获取/path/to/ENV/bin/activate,例如,如果你从bash脚本中运行它:

#!/bin/bash
source /path/to/ENV/bin/activate
python /path/to/script.py

告诉我哪个步骤不起作用以及您收到的任何错误消息。

如果您的python程序需要以不同的方式运行,而不是来自shell脚本,例如wsgi,那么我会为您提供更多提示。底线是:在使用需要它的python脚本之前,不要忘记使用virtualenv激活脚本。