Я следовал этому руководству, чтобы установить python2.7 на моем CentOS 5.5:
http://villaroad.com/2010/10/rolling-python-2-6-2-on-centos-5-3/
После установки Python 2.7 у меня есть:
/opt/python2.7$ ls -la
total 24
drwxr-xr-x 6 root root 4096 2011-10-01 22:32 .
drwxr-xr-x 4 root root 4096 2011-10-01 22:32 ..
drwxr-xr-x 2 root root 4096 2011-10-09 19:51 bin
drwxr-xr-x 3 root root 4096 2011-10-01 22:32 include
drwxr-xr-x 4 root root 4096 2011-10-01 23:34 lib
drwxr-xr-x 3 root root 4096 2011-10-01 22:32 share
/opt/python2.7$ ls -la bin
total 88
drwxr-xr-x 2 root root 4096 2011-10-09 19:51 .
drwxr-xr-x 6 root root 4096 2011-10-01 22:32 ..
-rwxr-xr-x 1 root root 105 2011-10-01 22:32 2to3
-rwxr-xr-x 1 root root 296 2011-10-09 19:49 easy_install
-rwxr-xr-x 1 root root 304 2011-10-09 19:49 easy_install-2.7
-rwxr-xr-x 1 root root 103 2011-10-01 22:32 idle
-rwxr-xr-x 1 root root 254 2011-10-03 01:37 pip
-rwxr-xr-x 1 root root 262 2011-10-03 01:37 pip-2.7
-rwxr-xr-x 1 root root 88 2011-10-01 22:32 pydoc
-rwxr-xr-x 2 root root 11783 2011-10-01 23:34 python
-rwxr-xr-x 2 root root 11783 2011-10-01 23:34 python2.7
-rwxr-xr-x 1 root root 1628 2011-10-01 23:34 python2.7-config
lrwxrwxrwx 1 root root 16 2011-10-01 23:34 python-config -> python2.7-config
-rwxr-xr-x 1 root root 18551 2011-10-01 22:32 smtpd.py
-rwxr-xr-x 1 root root 289 2011-10-09 19:51 virtualenv
Я использую /opt/python2.7/bin/virtualenv
двоичный файл для создания среды в /var/www/myproj/env
cd /var/www/myproj
virtualenv --no-site-packages -p /opt/python2.7/bin/python \
--clear --prompt="(myproj.com) " env
Активируйте его и выполните установку колбы в пипсах. pip устанавливает колбу на env/lib/python2.7/site-packages
, а ее нет на sys.path
$ python
Python 2.7.2 (default, Oct 1 2011, 23:29:08)
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import flask
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named flask
>>> import sys
>>> sys.path
['', '/opt/python2.7/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg',
'/opt/python2.7/lib/python2.7/site-packages/pip-1.0.2-py2.7.egg',
'/opt/python2.7/lib/python27.zip', '/opt/python2.7/lib/python2.7',
'/opt/python2.7/lib/python2.7/plat-linux2', '/opt/python2.7/lib/python2.7/lib-tk',
'/opt/python2.7/lib/python2.7/lib-old', '/opt/python2.7/lib/python2.7/lib-dynload',
'/opt/python2.7/lib/python2.7/site-packages']
Я пробовал то же самое, но использовал easy_install
вместо pip
- тот же результат.
Flask устанавливается под env/lib/python2.7/site-packages
, поэтому главный вопрос: не нужно ли virtualenv
добавлять env/lib/python2.7/site-packages
к пути sys в python? Если нет, то что мне делать лучше:
- добавить соответствующий каталог site-packages по пути Python во время выполнения (например,
sys.path.insert(0, <path to site-packages>)
в моем приложении для фляги,
- изменить системные
PYTHONPATH
или
- вызывает метод
after_install
virtualenv для добавления <path to site-packages>
к пути питона
дополнительная информация:
Я добавил к пользователю и root'у ~ / .bash_profile (~ / .profile в Ubuntu)
alias python='/opt/python2.7/bin/python'
alias python2.7='/opt/python2.7/bin/python'
PATH=$PATH:/opt/python2.7/bin
сделал source ~/.profile
какой питон производит /usr/bin/python
, что составляет 2,6,4 (хмммм ...)
Python 2.6.4 (r264:75706, Dec 7 2009, 18:43:55)
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
Довольно странно, но если я запускаю python
, я получаю правильную версию:
$ python
Python 2.7.2 (default, Oct 1 2011, 23:29:08)
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Что еще более странно, так это то, что после следования руководству по установке python2.7 я получал команду /opt/python2.7/bin/python
для which python
. Во всяком случае, вопрос там, любая помощь приветствуется. Пожалуйста, примите во внимание, что я новичок в Python - возможно, это глупый вопрос, который я задаю здесь.