我有运行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
答案 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激活脚本。