没有找到名为'requests'的模块。

3

我有两台Ubuntu服务器。在服务器A上输入以下内容可以正常工作:

Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests 
>>> from requests.packages.urllib3.poolmanager import PoolManager

然而,服务器B

Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests 
>>> from requests.packages.urllib3.poolmanager import PoolManager
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named packages.urllib3.poolmanager

两者版本相同:

Name: requests
Version: 2.7.0
Location: /usr/local/lib/python2.7/dist-packages
Requires: 

请问这里发生了什么事情?

这是B服务器的路径:

/usr/local/lib/python2.7/dist-packages/greenlet-0.4.5-py2.7-linux-x86_64.egg
/usr/local/lib/python2.7/dist-packages/gevent-1.0.1-py2.7-linux-x86_64.egg
/usr/lib/python2.7/dist-packages
/usr/lib/python2.7
/usr/lib/python2.7/plat-x86_64-linux-gnu
/usr/lib/python2.7/lib-tk
/usr/lib/python2.7/lib-old
/usr/lib/python2.7/lib-dynload
/usr/local/lib/python2.7/dist-packages

问题是服务器B将文件存放在这里,因此它应该能找到:

/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3

@BhargavRao 使用pip安装。 - Prometheus
请确保在B服务器的文件夹中没有名为requests.py的脚本。 - Assem
在B服务器的同一文件夹中,执行 `>>> import requests
requests.path` 然后告诉我们你得到了什么输出。
- Assem
@Falcon1 不是永久的;为什么不直接使用urllib3,像这样:from urllib3.poolmanager import PoolManager - Assem
这就是我正在尝试做的事情:“from urllib3.poolmanager import PoolManager”,但它似乎在“/usr/lib/python2.7/dist-packages/requests”中找到了另一个版本,该版本不包含urllib3。 - Prometheus
显示剩余5条评论
1个回答

4
这是一个在python-requests中的问题,因为所有者在PyPI和Ubuntu软件库之间没有以相同的方式打包它,如此处所述。
解决方案:
  1. 直接使用 urllib3

     from urllib3.poolmanager import PoolManager
    
  2. 完全删除所有的 python-requests 副本,然后重新安装它,可以使用 pip 或者使用 apt-get,其中包含 packages.urllib3


选项2:我如何从 /usr/lib/python2.7/dist-packages/requests 中删除版本?pip uninstall 会从错误的位置删除它。 - Prometheus
1
如果是通过apt-get安装的,请尝试:sudo apt-get remove python-requests,否则只需删除文件夹即可。 - Assem

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接