2016-12-06 4 views
2

Я установил Python 2.7 с этими командами«питон» по-прежнему работает версию системы после virtualenv активировать

./configure --prefix=/usr/local --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib" 
make && make altinstall 

Затем я создал дэ virtualenv, чтобы указать на 2.7 установки

$ virtualenv --python=/usr/local/bin/python2.7 testbox 
Already using interpreter /usr/local/bin/python2.7 
New python executable in /var/python_venv/testbox/bin/python2.7 
Also creating executable in /var/python_venv/testbox/bin/python 
Installing setuptools, pip, wheel...done. 
$ source testbox/bin/activate 
(testbox) $ python 
Python 2.6.6 (, Aug 18 2016, 15:13:37) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> 

но если активировать это его точка 2.6.6

cat /etc/redhat-release 
CentOS release 6.6 (Final) 

EDIT:

Я не знаю, почему это не работает, но я все еще могу использовать virtualenv в моем приложении апача Джанго, так что я не слишком обеспокоен

+0

Вы можете запустить 'which python' в virtualenv, чтобы проверить его. Похоже, у вас все еще есть системный python с запуском –

+1

$, который python alias python = '/ usr/bin/python' /usr/bin/python – Jabda

+0

Право. Который не является '/ usr/local/bin/python2.7' –

ответ

2

Итог:

Вы установили «python» в качестве оболочки (возможно, в сценариях запуска оболочки). Это мешает работе virtualenv замены того, что будет запускаться при вводе «python». Удалите псевдоним, и вы добры.

Вам также не нужно указывать --python=/usr/local/bin/python2.7 'Потому что вы используете virtualenv из этой установки Python, поэтому он уже использует его по умолчанию.


WFM с virtualenv 1.10.1: (см догадку ниже)

$ virtualenv --python=/usr/local/bin/python2.7 testbox 
Running virtualenv with interpreter /usr/local/bin/python2.7 
New python executable in testbox/bin/python2.7 
Also creating executable in testbox/bin/python 
Installing Setuptools.........................................done. 
Installing Pip................................................done. 
$ ls -l testbox/bin/ 
total 40 
-rw-r--r--. 1 root root 2194 Dec 7 03:06 activate 
-rw-r--r--. 1 root root 1250 Dec 7 03:06 activate.csh 
-rw-r--r--. 1 root root 2389 Dec 7 03:06 activate.fish 
-rw-r--r--. 1 root root 1129 Dec 7 03:06 activate_this.py 
-rwxr-xr-x. 1 root root 332 Dec 7 03:06 easy_install 
-rwxr-xr-x. 1 root root 340 Dec 7 03:06 easy_install-2.7 
-rwxr-xr-x. 1 root root 293 Dec 7 03:06 pip 
-rwxr-xr-x. 1 root root 301 Dec 7 03:06 pip-2.7 
lrwxrwxrwx. 1 root root 9 Dec 7 03:06 python -> python2.7 
lrwxrwxrwx. 1 root root 9 Dec 7 03:06 python2 -> python2.7 
-rwxr-xr-x. 1 root root 7788 Dec 7 03:06 python2.7 

И самое главное, что activate делает это:

PATH="$VIRTUAL_ENV/bin:$PATH" 
export PATH 

Я думаю, что вы используете virtualenv, который был установлен для вашего /usr/local/bin/python2.7. Вот почему сообщение «Уже используется ...». Если это так, вам не нужно передавать --python, потому что virtualenv уже использует его по умолчанию (проверьте его shebang).

Тем не менее, поскольку virtualenv создает versionless исполняемый файл и activatePATH изменяет, вы должны получить /var/python_venv/testbox/bin/python в python.

  • Поскольку python является псевдонимом в вашем случае, и activateне использует псевдонимы - вы должны это установить в ваших bash сценариев запуска.
+0

Он работает для вас, потому что у вас нет 'python' с псевдонимом системы python. Если вы добавите 'alias python =/usr/bin/python' в' .bashrc', вы получите тот же результат, что и OP при запуске 'python'. – alvits

+0

@ alvits, и этого не должно быть - это то, во что я еду. –

+0

Я хочу сказать, что ваш пост не является решением проблемы. Решение состоит в том, чтобы избавиться от псевдонима. Django работает, как утверждается, потому что никогда не использовал псевдоним. Только интерактивная оболочка использует псевдоним. – alvits