Python 导入模块在终端工作,但不在空闲状态

Python 导入模块在终端工作,但不在空闲状态,python,module,terminal,python-import,python-idle,Python,Module,Terminal,Python Import,Python Idle,我正在尝试在windows计算机上导入pyodbc模块。它在终端工作,但在空闲时不工作。IDLE中的错误消息为: 回溯(最近一次呼叫最后一次): 文件“FilePath/Filename.py”,第3行,在 导入pyodbc ImportError:没有名为pyodbc的模块 当使用不同路径安装多个版本的python时,通常会发生这种情况。通过打开空闲终端并使用 import sys sys.version sys.path 这些命令将打印当前python实例的系统路径和版本。在IDLE和命令

我正在尝试在windows计算机上导入
pyodbc
模块。它在终端工作,但在空闲时不工作。IDLE中的错误消息为:

回溯(最近一次呼叫最后一次):
文件“FilePath/Filename.py”,第3行,在
导入pyodbc
ImportError:没有名为pyodbc的模块

当使用不同路径安装多个版本的python时,通常会发生这种情况。通过打开空闲终端并使用

import sys
sys.version
sys.path
这些命令将打印当前python实例的系统路径和版本。在IDLE和命令行终端中使用此选项,以查看两者的不同之处。一旦你知道哪个版本是你想要的,那么就删除另一个。您还可以删除所有python实例,然后重新安装干净的python环境,但随后必须使用pip或easy_install重新安装所有模块

  • 在cmd中打开python(键入
    python
    并按enter键)
  • 在cmd中导入模块(键入
    Import modulename
  • 键入
    modulename.\uuuuu文件\uuuuu
  • 您将获得存储模块的路径
  • 复制相应的文件夹
  • 在空闲状态下,
    import sys
    并键入
    sys.executable
    ,以获取要导入模块的路径
  • 将模块文件夹粘贴到IDLE查找模块的路径中

  • 这种方法对我很有效。

    您可以在安装包后显示
    pip,并了解包的安装位置

    然后签入IDLE
    sys.path
    ,如果包含包的目录不在
    sys.path
    中,请尝试添加它

    import sys sys.path.append("/home/dm/.local/lib/python3.6/site-packages") # or another folder that `pip show` about package. 导入系统 sys.path.append(“/home/dm/.local/lib/python3.6/site包”) #或者另一个“pip show”关于包的文件夹。
    我找到了解决办法。它适合我

    问题是您的安装目录与python版本目录不匹配。
    解决方案是>>

  • 在搜索栏中键入%localappdata%,然后转到此文件夹。
  • 在这里选择程序文件夹。然后选择程序、Python、Python版本、脚本
  • 复制脚本文件夹的位置
  • 打开命令提示符并键入cd//yourpath(在我的例子中是cd C:\Users\3C HOUSE\AppData\Local\Programs\Python\Python37\Scripts
  • 如果您想安装numpy,现在运行pip install numpy

  • 出现这种情况是因为安装了多个python(32位版本、64位版本)或3v和2.7v,所以要解决此问题,您必须为该特定版本调用
    idle
    ,如下所示

    cd
    dir
    版本的
    dir
    ,在该文件夹中键入以下命令

    pythonw.exe Lib\idlelib\idle.pyw
    
    此命令将为该版本调用idle
    导入会很好地工作

    例如,当您将具有导入熊猫的python脚本放在与pandas等站点包相同的文件夹中,并使用CMD上使用的相同版本的python时,它应该有助于在空闲状态下运行脚本。

    检查代码路径和模块路径。将模块复制到代码为我工作的路径。
    “sys.executable”将给出代码存储的路径。

    Me在尝试导入在终端上成功导入但无法在空闲时安装的模块时也遇到了相同的问题

    我是如何修复的?
    假设您知道如何在终端上以及python解释器内部执行命令

    • 打开终端并执行以下命令:

      :~$python3

      Python 3.6.9 (default, Jan 26 2021, 15:33:00)
      [GCC 8.4.0] on linux
      Type "help", "copyright", "credits" or "license" for more information.
      >>>
      >>>
      >>> import sys
      >>> sys.version
      '3.6.9 (default, Jan 26 2021, 15:33:00) \n[GCC 8.4.0]'
      >>> sys.path
      ['', '/usr/lib/python36.zip', '/usr/lib/python3.6', 
      '/usr/lib/python3.6/lib-dynload', '/usr/local/lib/python3.6/dist- 
      packages', '/usr/lib/python3/dist-packages']
      >>>
      
    现在在python3解释器中导入模块

      >>> import nester
      >>>
      >>> nester.__file__
      '/usr/local/lib/python3.6/dist-packages/nester.py'
      >>>
    
    • 打开IDLE并运行以下命令并进行比较

      Python 3.9.1 (tags/v3.9.1:1e5d33e, Dec  7 2020, 17:08:21) [MSC v.1927 
      64 bit (AMD64)] on win32
      Type "help", "copyright", "credits" or "license()" for more 
      information.
      >>> import sys
      >>> sys.version
      '3.9.1 (tags/v3.9.1:1e5d33e, Dec  7 2020, 17:08:21) [MSC v.1927 64 bit 
      (AMD64)]'
      >>> sys.path 
      
    [“”,'C:\Users\username\AppData\Local\Programs\Python39\Lib\idlelib','C:\Users\username\AppData\Local\Programs\Python39\Python39.zip','C:\Users\username\AppData\Local\Programs\Python39\DLLs','C:\Users\username\AppData\Local\Programs\Python39\Lib','C:\Users\Users\AppData\Local\Python39','sername\AppData\Local\Programs\Python\Python39\lib\site包']

      >>> sys.executable
    
    'C:\Users\username\AppData\Local\Programs\Python\Python39\pythonw.exe'

    现在,如果比较Terminal和IDLE的两个输出

    • 终端模块位置与空闲位置不同
    • 我在windows机器上使用Ubuntu18终端
    所以我只是把我的文件复制到“C”目录并确保它的文件权限。就是这样

      :~$ cp -p /usr/local/lib/python3.6/dist-packages/nester.py /mnt/c/Users/username/AppData/Local/Programs/Python/Python39/Lib/
    


    成功了!!

    尝试从终端获取空闲版本和python运行版本,您可以使用-
    import sys;print(sys.version)
    关于这一点。同时查看这两个版本的
    sys.path
    …看到任何区别吗?在unix或Mac上,不应该删除Python的系统安装,即使通常使用备用安装。@TerryJanReedy为什么会这样?因为Mac和至少一些linux发行版都带有经过测试的Python脚本,可以与系统Python一起使用。这是doesn不适用于OP的错误,但我要补充的是,如果在启动IDLE的同一路径中存在与您尝试导入的包同名的脚本,您可能会得到导入错误。只有在我从IDE运行时,它才对我有效,如果我想从cmd运行.py文件,它会显示找不到模块。如果我想逐行在cmd上运行,它会得到stuck。