通过 pip 安装 pysftp 失败(因为有 2 个 python2.x 版本?)
Posted
技术标签:
【中文标题】通过 pip 安装 pysftp 失败(因为有 2 个 python2.x 版本?)【英文标题】:Installation of pysftp via pip failed (because of 2 python2.x versions?) 【发布时间】:2016-03-20 02:57:17 【问题描述】:我的 Ubuntu 10.04 带有 Python 2.6。现在,我还安装了 Python 2.7,这是系统默认的,因为当我从终端启动 python
时,它会启动 python 2.7。
现在,我想使用 pip 安装库 pysftp,但我很难做到。以下是我的尝试和结论的一些结果。我做了pip install pysftp
,但上面写着:
Downloading/unpacking pysftp
Running setup.py egg_info for package pysftp
Traceback (most recent call last):
File "<string>", line 3, in <module>
File "/usr/local/lib/python2.6/dist-packages/setuptools/__init__.py", line 12, in <module>
from setuptools.extension import Extension
File "/usr/local/lib/python2.6/dist-packages/setuptools/extension.py", line 8, in <module>
from .dist import _get_unpatched
File "/usr/local/lib/python2.6/dist-packages/setuptools/dist.py", line 21, in <module>
packaging = pkg_resources.packaging
AttributeError: 'module' object has no attribute 'packaging'
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 3, in <module>
File "/usr/local/lib/python2.6/dist-packages/setuptools/__init__.py", line 12, in <module>
from setuptools.extension import Extension
File "/usr/local/lib/python2.6/dist-packages/setuptools/extension.py", line 8, in <module>
from .dist import _get_unpatched
File "/usr/local/lib/python2.6/dist-packages/setuptools/dist.py", line 21, in <module>
packaging = pkg_resources.packaging
AttributeError: 'module' object has no attribute 'packaging'
----------------------------------------
Command python setup.py egg_info failed with error code 1
Storing complete log in ./pip-log.txt
在我看来,pip(显然是在安装 Python 2.7 之前安装的)链接到不支持 pysftp 的旧版 Python。也因为当我做pip --version
时,它说:
pip 0.3.1 from /usr/lib/python2.6/dist-packages (python 2.6)
当我执行whereis python
时,它给了我以下信息:
python: /usr/src/Python-2.7.10/python /usr/bin/python2.6 /usr/bin/python /etc/python2.6 /etc/python /usr/lib/python2.6 /usr/lib/python3.1 /usr/lib64/python2.6 /usr/lib64/python3.1 /usr/local/bin/python2.7-config /usr/local/bin/python /usr/local/bin/python2.7 /usr/local/lib/python2.6 /usr/local/lib/python2.7 /usr/include/python2.6 /usr/share/python /usr/share/man/man1/python.1.gz
如何安装 pysftp?
【问题讨论】:
【参考方案1】:您需要为 Python 2.7 重新安装 pip
,然后运行 pip2.7 install pysftp
。您需要为要使用的每个 Python 版本安装pip
。 setuptools
包可能是最简单的方法。您可以简单地运行以下命令一举完成所有操作:
wget https://bootstrap.pypa.io/ez_setup.py -O --no-check-certificate - | sudo python2.7 && sudo easy_install-2.7 pip && sudo pip2.7 install pysftp
有时较旧的 Linux 安装会出现上述命令的问题,因为在通过 ez_setup.py
下载完整的 setuptools
软件包时遇到“无效”证书(更多详细信息请参见see here)。这可以通过这个替代的一次性命令来规避:
wget https://pypi.python.org/packages/source/s/setuptools/setuptools-18.8.1.zip --no-check-certificate && unzip setuptools-18.8.1.zip && cd setuptools-18.8.1 && sudo python setup.py install && sudo easy_install-2.7 pip && sudo pip2.7 install pysftp
【讨论】:
我收到 wget 命令的证书错误(已通过--no-check-certificate
解决)。然后脚本给出return status 5
(同时为 setuptools 调用 wget)。手动下载该文件后,它显示zipfile.BadZipfile: File is not a zip file
。帮忙?
@Lewistrick 这很不寻常,我无法想象为什么它会尝试解压缩... sudo python2.7 ez_setup.py
部分失败了?
是的,它正在尝试解压缩 https://pypi.python.org/packages/source/s/setuptools/setuptools-18.8.1.zip
的本地版本。是不是用错文件了?
@Lewistrick 这与它为我下载的文件相同。可能是下载出错了?
起初有。所以我手动下载了。然后它引发了 zip 错误。【参考方案2】:
我认为您需要使用代码安装某种“基本包”
sudo apt-get install build-essential libssl-dev libffi-dev python-dev
然后就可以安装了:
sudo pip install pysftp
sudo pip install enum
【讨论】:
以上是关于通过 pip 安装 pysftp 失败(因为有 2 个 python2.x 版本?)的主要内容,如果未能解决你的问题,请参考以下文章
当我们尝试在 Python 中使用 pysftp 从 SFTP 串行下载 50 多个文件时,下载失败并显示“身份验证失败”?
使用 pysftp 连接到 SFTP 服务器时出现“加载主机密钥失败”警告
Pysftp "cd" 对 AIX 服务器失败,并出现 "OverflowError: mode out of range" 错误