导入模块在终端中工作,但不在IDLE中

时间:2015-07-27 19:31:49

标签: python module terminal python-import python-idle

我正在尝试在Windows计算机上导入pyodbc模块。它适用于终端,但不适用于IDLE。 IDLE中的错误消息是:

Traceback (most recent call last):

  File "FilePath/Filename.py", line 3, in <module>
      import pyodbc
  ImportError: No module named pyodbc

8 个答案:

答案 0 :(得分:4)

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

来检查是否有多个安装
import sys
sys.version
sys.path

这些命令将打印系统PATH和当前python实例的版本。在IDLE和命令行终端中使用它来查看每个不同的位置。一旦你知道你想要的那个版本,那么就删除另一个版本。您也可以删除所有python实例,然后重新安装一个干净的python环境,但是你必须使用pip或easy_install重新安装所有模块

答案 1 :(得分:1)

  1. 在cmd中打开python(键入python,然后按Enter键)
  2. 以cmd(类型import modulename)导入模块
  3. 键入modulename.__file__
  4. 您将获得模块存储的路径
  5. 复制相应的文件夹
  6. 在IDLE中,import sys并键入sys.executable以获得寻找要导入模块的路径
  7. 将模块的文件夹粘贴到IDLE查找模块的路径中。

这种方法对我有用。

答案 2 :(得分:1)

您可以在安装软件包后pip show并了解软件包的安装位置。

之后,请检查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.

答案 3 :(得分:0)

我找到了解决方案。它对我有用

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

  1. 在搜索栏中输入%localappdata%,然后转到该文件夹​​。
  2. 在这里选择程序文件夹。然后选择“程序”,“ Python”,“ Python版本”,“脚本”
  3. 复制Scripts文件夹的位置
  4. 打开命令提示符,然后输入cd //您的路径(在我的情况下为 cd C:\ Users \ 3C HOUSE \ AppData \ Local \ Programs \ Python \ Python37 \ Scripts
  5. 如果您想安装numpy ,请现在运行 pip install numpy

答案 4 :(得分:0)

发生这种情况是因为安装了多个python(32位版本,64位版本)或3v和2.7v,所以要解决此问题,您必须针对该特定版本调用idle

cd导入可以在cmd中正常工作的版本的dir 在该文件夹中键入以下命令

pythonw.exe Lib\idlelib\idle.pyw

此命令将为该版本调用空闲 并且导入将正常工作

答案 5 :(得分:0)

当您将导入了大熊猫的python脚本放置在与站点软件包(例如pandas)相同的文件夹中,并使用CMD上使用的相同版本的python时,它将有助于在IDLE中运行脚本。

答案 6 :(得分:0)

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

答案 7 :(得分:0)

我在尝试导入已在终端上成功导入但无法在 IDLE 上安装的模块时也遇到了同样的问题。

ModuleNotFoundError

我是如何修复的?
假设您知道如何在终端以及 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\Python\Python39\Lib\idlelib','C:\Users\username\AppData\Local\Programs\Python\Python39\python39. zip', 'C:\Users\username\AppData\Local\Programs\Python\Python39\DLLs', 'C:\Users\username\AppData\Local\Programs\Python\Python39\lib', 'C:\Users \username\AppData\Local\Programs\Python\Python39', 'C:\Users\username\AppData\Local\Programs\Python\Python39\lib\site-packages']

  >>> sys.executable

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

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

  • 终端模块位置与 IDLE 不同
  • 我在 Windows 机器上使用 Ubuntu 18 终端

所以我只是将我的文件复制到“C”目录并确保其文件权限。就是这样。

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

ModuleNotFoundError Fixed

成功了!!