gpt4 book ai didi

Python没有 "see"一个包

转载 作者:太空狗 更新时间:2023-10-30 03:06:38 26 4
gpt4 key购买 nike

我按照本教程在我的 CentOS 5.5 上安装了 python2.7: 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 install flask。 pip 将 flask 安装到 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到 python 的 sys 路径?如果没有,我该怎么做更好:

  • 在运行时在 python 路径上添加适当的站 pip 包目录(例如 sys.path.insert(0, <path to site-packages>) 在我的 flask 应用程序中,
  • 修改系统的PYTHONPATH
  • 触发virtualenv的after_install添加方法 <path to site-packages>到 python 的路径

?

更多信息:我已经添加到用户和 root 的 ~/.bash_profile(Ubuntu 上的 ~/.profile)

alias python='/opt/python2.7/bin/python'
alias python2.7='/opt/python2.7/bin/python'
PATH=$PATH:/opt/python2.7/bin

做了source ~/.profile哪个 python 产生 /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/pythonwhich python命令。无论如何,问题就在那里,我们将不胜感激。请考虑我是一个 Python 新手,- 可能这是我在这里问的一个愚蠢的问题。

最佳答案

每当您使用 Bash 运行命令时,它都会缓存命令的位置。这可能就是你在这里遇到的。使用 hash -r 清理缓存。

请注意,您的系统中现在有三个 python:/usr/bin 中的系统 2.6,/opt/python2.7/bin/中的 2.7,以及 env/bin 中的 virtualenv 的 2.7。只有最后一个安装了 flask 。请特别确保您正在称呼那个。

另外,不要弄乱 .bash_profile。特别是 root 的 .bash_profile——你不需要 flask 的 root 权限,是吗?坚持使用 virtualenv,它更干净,而且你弄乱系统的可能性要低得多。(话虽如此,$PATH 会被扫描以寻找第一个匹配项,因此您需要 export PATH=/opt/而不是 PATH=$PATH:/opt/python2.7/bin python2.7/bin:$PATH。但那是下次你需要更改 $PATH 的时候,不是现在。)

关于Python没有 "see"一个包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7702995/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com