Ubuntu Python“没有名为paramiko的模块”

5

我正在尝试在使用Python 2.7的Ubuntu上使用Paramiko,但是导入paramiko会导致以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named paramiko

这个网站上的其他问题对我不适用,因为我是Ubuntu的新手。
以下是我运行的一些重要命令以检查内容:
sudo pip install paramiko
pip install paramiko
sudo apt-get install python-paramiko

Paramiko已经被"安装"。以下是我用于"安装" Paramiko 的唯一命令。由于我是Ubuntu的新手,如果需要运行更多命令,请告诉我。

which python
/usr/local/bin/python

python -c "from pprint import pprint; import sys; pprint(sys.path);"
['',
 '/usr/local/lib/python27.zip',
 '/usr/local/lib/python2.7',
 '/usr/local/lib/python2.7/plat-linux2',
 '/usr/local/lib/python2.7/lib-tk',
 '/usr/local/lib/python2.7/lib-old',
 '/usr/local/lib/python2.7/lib-dynload',
 '/usr/local/lib/python2.7/site-packages']

在Python解释器中,我运行了help("modules"),但是Paramiko不在列表中。

/usr/local/lib/python2.7/dist-packages中有两个Paramiko文件夹。


你尝试在虚拟环境中安装它了吗? - user1846747
@DivakarDass,不,我希望避免使用virtualenv,因为我不会在Ubuntu上使用太长时间,只是想保持简短和简单。 - Delliardo
1
看起来你安装了本地的Python,而不是系统提供的Python。尝试运行/usr/bin/python - Colonel Thirty Two
@ColonelThirtyTwo,好的,问题解决了,这很有趣。谢谢!有没有办法让终端运行适当的Python? - Delliardo
7个回答

12

简短版:你混合使用了Ubuntu打包版本的Python(/usr/bin/python)和一个本地构建和安装的版本(/usr/local/bin/python)。

详细版:

  • 您使用apt-get install python-paramiko来安装Ubuntu官方的Paramiko软件包到/usr/lib/python2.7/dist-packages
  • 您使用(我假设的是)Ubuntu版本的pip,它安装到/usr/local/lib/python2.7/dist-packages。(请参见这里。)
  • 您使用了一个本地构建版本的Python,因为它是本地构建的,所以它使用/usr/local/lib/python2.7而不是/usr/lib/python2.7,并且因为它没有Debian/Ubuntu自定义,所以它不检查使用dist-packages

解决方法:您应该能够将/usr/local/lib/python2.7/dist-packages添加到/usr/local/bin/pythonsys.path中,但由于您正在使用Ubuntu,让Ubuntu为您完成工作最简单:

  • 使用/usr/bin/python而不是本地版本。
  • 尽可能使用Ubuntu的软件包(即使用apt-get而不是pip)。
  • 其余部分使用virtualenv(以保持Ubuntu打包和个人安装模块之间的清洁分离)。

我会走得更远,卸载本地版本的Python并删除/usr/local/lib/python2.7,以确保不会发生进一步的不匹配。如果您不想这么极端,那么您可以编辑$PATH,将/usr/bin放在/usr/local/bin前面,以默认运行系统版本的Python。


使用virtualenv来实现(以保持Ubuntu打包的模块和个人安装的模块之间的清晰分离)。难道Ubuntu PIP安装在/usr/local/下吗? - Colonel Thirty Two
@ColonelThirtyTwo - 是的,它可以。我只是非常担心将个人模块与系统范围内(/usr/usr/local)的模块分开,但感谢您的更正。 - Josh Kelley

4

1

有两种方法可以在Python中添加模块:

第一种:

  1. 下载包。
  2. 创建目录并将包粘贴到其中。
  3. 在终端中输入:
  4. export PYTHONPATH=$PYTHONPATH:path_of_package

第二种:

  1. 打开Python解释器:
  2. import sys
  3. sys.path.insert(0, "path_of_package")

0
此外,请注意 Python 的版本,如果错误是由 Python3 报告的,则安装 Python3 的 paramiko。

0

如果您正在使用Python 3,请键入以下命令

$ sudo -H pip3 install paramiko --ignore-installed

0

尝试仅通过命令进行安装。

  1. 使用此命令从git下载paramiko软件包:git clone https://github.com/paramiko/paramiko.git
  2. 进入解压目录并运行export PYTHONPATH=$PYTHONPATH:<path_to_paramiko>
  3. 如果您发现libffi软件包未找到,则运行此命令:sudo apt-get install libffi6 libffi-dev,如果您没有正确安装python dev的头文件和静态库,则运行此命令:sudo apt-get install python-dev

享受吧 :)


-1

尝试输入 pi 然后按下回车,会得到以下结果:

:$ pi

pic piconv pidstat pinentry-curses ping6

       pip3             pivot_root       

pic2graph pidof pinentry ping pinky

pic2graph pidof pinentry ping pinky

        pip3.6      

然后你输入whereis pip3

$ whereis pip3

pip3: /usr/local/bin/pip3.6 /usr/local/bin/pip3

xg@xx-ppmaster:/xg/scripts/pyth

$ sudo /usr/local/bin/pip3 install paramiko

这会让你安装paramiko

更多关于Python安装的信息

https://danieleriksson.net/2017/02/08/how-to-install-latest-python-on-centos/


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