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

问题描述 投票:0回答:9

我正在尝试在 Windows 计算机上导入

pyodbc
模块。它可以在终端中运行,但不能在 IDLE 中运行。 IDLE 中的错误消息是:

Traceback (most recent call last):

  File "FilePath/Filename.py", line 3, in <module>
      import pyodbc
  ImportError: No module named pyodbc
python module terminal python-import python-idle
9个回答
15
投票

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

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

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


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

这个方法对我有用。


8
投票

您可以在安装软件包后

pip show
了解软件包的安装位置。

之后检查 IDLE

sys.path
,如果包含包的目录不在
sys.path
中,请尝试添加它。

导入系统
sys.path.append("/home/dm/.local/lib/python3.6/site-packages")
# 或另一个关于包的 `pip show` 文件夹。

1
投票

发生这种情况是因为安装了多个Python(32位版本,64位版本)或3v和2.7v,所以要解决这个问题,你必须像这样调用该特定版本的

idle

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

pythonw.exe Lib\idlelib\idle.pyw

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


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

我是如何修复的?

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

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

现在,如果您比较终端和 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/

成功了!


0
投票

我找到了解决方案。对我有用
问题是你的安装目录和python版本目录不匹配。
解决方案是>>>


    在搜索栏中输入 %localappdata%,然后转到此文件夹。

  1. 此处选择程序文件夹。然后选择程序、Python、Python 版本、脚本

  2. 复制脚本文件夹的位置

  3. 打开命令提示符并输入 cd //yourpath (在我的例子中
  4. cd C:\Users C HOUSE\AppData\Local\Programs\Python\Python37\Scripts
  5. 如果你想安装 numpy ,现在运行 pip install numpy

0
投票
当您将导入 pandas 的 Python 脚本与 pandas 等站点包放在同一文件夹中,并使用 CMD 上使用的相同版本的 Python 时,它应该有助于在 IDLE 中运行您的脚本。


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


0
投票
对于Windows,打开命令提示符并输入

pip show pyodbc

以获取包的路径并复制该路径。
然后打开空闲并运行这些行

import sys sys.path
将命令提示符中的路径与在 IDLE 中运行上述行提供的列表中提到的路径进行匹配。如果未提及路径,则在空闲状态下运行这些行

sys.path.append("Enter the copied path of package here")
执行这些行后,通过导入包再次检查它是否适合您。

© www.soinside.com 2019 - 2024. All rights reserved.