Moi*_*aja 2 python python-requests
我在我的系统上安装了请求模块.
pip install requests
Run Code Online (Sandbox Code Playgroud)
现在我试图在rpel中导入请求
import requests
Run Code Online (Sandbox Code Playgroud)
它失败并出现以下错误
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named requests
Run Code Online (Sandbox Code Playgroud)
aba*_*ert 14
造成这种情况的最常见的原因是,你有Python的2.X的两个版本,并且pip
在首先出现在你PATH
不与走python
在首先出现在你的PATH
.
有两种方法可以实现.
首先,你可能有,例如,在你/usr/local/bin
之前,但你的Python副本没有.所以,当你运行时,那就是安装的.但是,当你跑步的时候,就是这样./usr/bin
PATH
/usr/local
pip
pip install requests
/usr/bin/pip
/usr/lib/python2.7/site-packages
python
/usr/local/bin/python
/usr/local/lib/python2.7/site-packages
其次,即使你的两个Python 2.x位于不同的位置,他们也可能希望将pip
(和其他脚本和可执行文件)安装到同一个地方.特别是,/usr/bin
通常保留用于操作系统或其软件包管理器附带的东西,因此如果您使用/usr/bin/python ez_setup.py
或者使用/usr/bin/easy_install pip
许多其他常用方法进行安装pip
,它可能最终会被安装/usr/local/bin
.在这种情况下,它将覆盖任何早期/usr/local/bin/pip
与你的/usr/local/bin/python
.无论如何,结果基本相同:pip
现在意味着/usr/local/bin/pip
,但它仍然与您的/usr
Python,而不是您的/usr/local
Python,并安装到/usr/lib/python2.7/site-packages
,/usr/local/bin/python
无法看到.
如果您的两个版本是2.7和3.4,则没有问题; 每PEP 394,无论是一切的3.X版本必须与运行python3
和pip3
等,或在2.x版本必须与运行python2
和pip2
等.
如果您的两个版本是例如2.6和2.7,则存在问题,但您可以轻松解决它,因为您应该始终拥有pip2.6
和python2.6
vs. pip2.7
和python2.7
.你可以用自己的混淆python
和pip
,但你不必.
如果你的两个版本都是2.7,那么就没有办法消除歧义(除非一直使用完整的绝对路径,否则没有人愿意这样做).
那么,为什么有人会在不知道他们在做什么的情况下安装两个Python 2副本?
最常见的原因是它们在Mac上,它带有Python 2.7,但是他们读了一篇博客文章,告诉他们安装另一个Python并没有解释如何知道他们在做什么.Apple预先安装的Python位于/ usr/bin中,但安装了脚本和二进制文件/usr/local/bin
.最流行的替代Python版本是python.org安装程序和Homebrew,/usr/local/bin
默认安装到这两个版本.事实上Mac用户往往不如Linux或FreeBSD用户那样精通Unix,但即使没有这个,这也是一个完美的方式来结束成千上万拥有a pip
和a python
不匹配的人,不知道为什么.
以前几乎所有Mac Python用户都有很好的理由来安装第二个Python.在OS X 10.6之前,Apple预装的Python版本往往过时,有时会破坏.如果Apple只给你2.4,那么安装2.6是有意义的.而这样做是没有问题的,因为python2.4
和python2.6
易于消除歧义.但是苹果公司多年来一直在安装2.7.有时很好的理由为什么你需要一个不同的(你需要2.7.7中的错误修复,但Apple给你2.7.5,你需要32位版本,你需要一个额外的电池版本,如Enthought,你需要py2app
从中构建捆绑包,......),但这些原因不再适用于大多数人.
事实上,StackOverflow上的很多人似乎都有三个版本的Python 2.7.我不确定为什么这么常见,但他们会使用Homebrew安装Python 2.7,然后使用Python.org或Enthought的安装程序,现在他们有三个Python 2.7版本都在争夺/的所有权USR/local/bin目录.
那么,你怎么解决这个问题呢?
pip3
和python3
(ipython3
和依此类推),路径不再是问题./usr/local/bin
过/usr/bin
),它应该让你pip install foo
没有sudo
,而苹果不会,这使得很难不小心搞砸并安装到错误的.我还看到至少有一个Windows用户同时拥有这两个,C:\Python27
并且D:\Python27
两者都是PATH
第C:
一个,但pip
只安装了D:
.这似乎远不如Mac混淆(可能是因为Windows不附带Python,并且没有包管理器,所以你要获得任何Python的唯一方法是运行安装程序).这里的解决方案更简单:Windows不需要Python,因此您可以删除任何您想要的.
最后,在非Mac*nix系统上,特别是RHEL/CentOS Linux,您可能拥有操作系统所需的Python 2.6或2.4以及您安装的Python 2.7,因为您需要它,或操作系统需要的2.7和安装2.5作为某些"兼容性"包或类似的依赖.无论哪种方式,您都可以轻松地意外地安装pip
您实际不使用的那个(特别是如果您使用pip
引导程序而不是程序包管理器安装它).
这里的解决方案非常简单:卸载它pip
,并使用yum
或者apt
安装任何python-pip
你想要使用的Python 2.7.并养成使用python2.7
和pip2.7
- 或者只是在您的配置文件中添加别名的习惯,以便python
或者py
或者您喜欢运行什么python2.7
.
归档时间: |
|
查看次数: |
19595 次 |
最近记录: |