Python没有;见;包裹

Python没有;见;包裹,python,virtualenv,pip,flask,Python,Virtualenv,Pip,Flask,为了在CentOS 5.5上安装python2.7,我遵循了本教程: 安装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 r

为了在CentOS 5.5上安装python2.7,我遵循了本教程:

安装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安装烧瓶。pip将烧瓶安装到
env/lib/python2.7/site包中
,但它不在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']
did
source~/.profile
哪个python生成的
/usr/bin/python
是2.6.4(hmmmm…)

很奇怪,但是如果我运行
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安装教程之后,我在
哪个python
命令上得到了
/opt/python2.7/bin/python
。不管怎么说,问题就在这里,任何帮助都是非常感谢的。请考虑一下我是一个Python NexBee,这可能是我在这里问的一个愚蠢的问题。

< P>每当你用BASH运行一个命令时,它会缓存命令的位置。这可能就是你在这里遇到的。使用
hash-r
清理缓存

请注意,您的系统中现在有三个python:系统的2.6 in/usr/bin、2.7 in/opt/python2.7/bin/和virtualenv的2.7 in env/bin。只有最后一个安装了烧瓶。另外要确保你正在校准那个

另外,不要弄乱.bash_配置文件。特别是root的.bash_配置文件–您不需要flask的root权限,是吗?坚持使用virtualenv,它更干净,而且你弄乱系统的可能性也更低。
(这就是说,$PATH是扫描第一个匹配项的,因此您不需要使用
PATH=$PATH:/opt/python2.7/bin
而需要
export PATH=/opt/python2.7/bin:$PATH
。但这是下次您需要更改$PATH时使用的,而不是现在使用的。)

感谢您为发生的事情提供了很好的理由。事实上,我不得不调用
env/bin/python
python
说python二进制文件在那里,但我把
别名python=“/path/to/python2.7”
搞砸了,因此系统知道
python
/opt/python2.7/bin/python
的别名,而不是合适的二进制文件!哦,孩子,因为我弯曲的手而让人头疼了这么多:-)在某种程度上,我觉得添加别名是个坏主意,但我只是依赖于那个教程……是的,这个教程很老了——它可能是在
virtualenv
存在之前编写的,然后匆忙地为Python 2.7进行了修补
virtualenv
的创建正是为了让这些事情变得更简单:)
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 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.