【问题标题】:Ubuntu Python "No module named paramiko"Ubuntu Python“没有名为 paramiko 的模块”
【发布时间】:2023-11-22 19:23:01
【问题描述】:

所以我尝试在带有 Python 2.7 的 Ubuntu 上使用 Paramiko,但 import 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 不在列表中。

两个 paramiko 文件夹位于usr/local/lib/python2.7/dist-packages

【问题讨论】:

  • 您是否尝试将其安装在 virtualenv 中?
  • @DivakarDass,不,我希望避免使用 virtualenv,因为我不会使用 Ubuntu 太久,只是尽量保持简短。
  • 看起来你有一个本地构建的 Python 安装,它正在执行而不是系统提供的。尝试运行/usr/bin/python
  • @ColonelThirtyTwo,好吧,这解决了这个问题,这很有趣。谢谢!有没有办法让终端运行适当的python?

标签: python ubuntu import paramiko


【解决方案1】:

短版:您正在混合使用 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。 (见here。)
  • 您使用了本地构建的 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/ 吗?
  • @ColonelThirtyTwo - 是的,确实如此。我真的很想将个人模块与系统范围(/usr/usr/local)模块分开,但感谢您的更正。
【解决方案2】:

尝试从https://github.com/paramiko/paramiko 下载 zip 文件并在解压后的目录中运行此命令:

python setup.py install

【讨论】:

    【解决方案3】:

    在python中添加模块还有另外两种方法:

    第一个:

    1. 下载包。
    2. 创建目录并将包粘贴到其中。
    3. 点击终端:
    4. 导出 PYTHONPATH=$PYTHONPATH:path_of_package

    第二个:

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

    【讨论】:

      【解决方案4】:

      尝试输入 pi 然后点击,这会给你这个

      :$pi

      pic piconv pidstat pinentry-curses ping6

             pip3             pivot_root       
      

      pic2graph pidof pinentry ping pinky

              pip3.6      
      

      然后你输入 whereis pip3

      $ 哪里是 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/

      【讨论】:

        【解决方案5】:

        尝试仅通过命令安装。

        1. 使用以下命令从 git 下载 paramiko 包:git clone https://github.com/paramiko/paramiko.git
        2. 进入解压目录并运行export PYTHONPATH=$PYTHONPATH:&lt;path_to_paramiko&gt;
        3. 如果你发现 libffi 包没有找到然后运行这个命令:sudo apt-get install libffi6 libffi-dev 如果你没有正确安装 python dev 的头文件和静态库然后运行这个命令:sudo apt-get install python-dev

        享受:)

        【讨论】:

          【解决方案6】:

          还有,注意python的版本,如果是python3报错,那就安装python3的paramiko吧。

          【讨论】:

            【解决方案7】:

            如果您使用的是 Python 3,请输入以下命令

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

            【讨论】: