2013-10-06 2 views
1

У меня есть скрипт bash, который запускает программу Python. Я использую virtualenv.python использует неправильный путь

Елки включает окр Баш:

source ./ENV/bin/activate 

Тогда я вижу (ENV) префикс в Баше строки.

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

Когда я пытаюсь запустить программу Python из сценария bash, он запускается с неправильной версией 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 
+2

Каков результат 'какой python'? – Wolph

+0

Можете ли вы добавить вывод 'ls -la/project/ENV/bin'? – Wolph

+0

[код] Ls -la -rw-р - r-- 1 WNC WNC 2219 27 сентября 1:42 ACTIVATE -rw-г - r-- 1 WNC WNC 1275 Sep 27 01:42 activate.csh -rw-r - r-- 1 wnc wnc 2414 27 сентября 01:42 activate.fish -rw-r - r-- 1 wnc wnc 1129 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 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 -> pyth on2.6 -rwxr-xr-x 1 wnc wnc 6240 Sep 27 01:42 python2.6 [code] –

ответ

1

проверка Sanity:

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

Первый python -V должен показать печать Python 2.6 и второй Python 3.2, верно?

При запуске сценария Python, тот, который вы хотите использовать выше virtualenv, убедитесь, что источник /path/to/ENV/bin/activate первым, например, если вы запустите его изнутри Баш скрипт:

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

Скажи мне, который шаг не работает и любые сообщения об ошибках, которые вы получаете.

Если ваша программа python должна запускаться по-другому, а не из сценария оболочки, например, wsgi, то у меня будет больше советов для вас. Суть в том, что: не забудьте запустить скрипт virtualenv, прежде чем использовать свой скрипт python, который ему нужен.

Смежные вопросы