分享

Python没有“看到”一个包

 印度阿三17 2019-06-26

我按照本教程在CentOS 5.5上安装python2.7:
http:///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安装烧瓶. 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添加到python的sys路径中吗?如果没有,我该做得更好:

>在运行时在python路径上添加适当的site-packages目录(例如,我的烧瓶应用程序中的sys.path.insert(0,< path to site-packages>),
>修改系统的PYTHONPATH或
>触发virtualenv的after_install方法,以添加<路径到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

做了〜/ .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 / python上的python命令.无论如何,问题在那里,任何帮助表示赞赏.请考虑一下,我是一个Python新手, – 这可能是我在这里问的一个愚蠢的问题.

解决方法:

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

请注意,您的系统中现在有三个Python:系统在/usr/bin中的2.6,/ opt / python2.7 / bin /中的2.7,以及env / bin中的virtualenv’s 2.7.只有最后一个安装了烧瓶.更加确定你正在打算那个.

另外,不要乱用.bash_profile.特别是root的.bash_profile – 你不需要烧瓶的root权限,对吗?坚持使用virtualenv,它更清洁,你的系统陷入困境的可能性要小得多.
(话虽如此,$PATH会被扫描第一场比赛,所以你需要导出PATH = / opt / python2.7 / bin:$PATH而不是PATH = $PATH:/opt/python2.7/bin.但是那是你下次需要改变$PATH的时候,不是现在.)

来源:https://www./content-1-269701.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多