Python 导入模块在终端工作,但不在空闲状态
我正在尝试在windows计算机上导入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和命令
pyodbc
模块。它在终端工作,但在空闲时不工作。IDLE中的错误消息为:
回溯(最近一次呼叫最后一次):
文件“FilePath/Filename.py”,第3行,在
导入pyodbc
ImportError:没有名为pyodbc的模块
当使用不同路径安装多个版本的python时,通常会发生这种情况。通过打开空闲终端并使用
import sys
sys.version
sys.path
这些命令将打印当前python实例的系统路径和版本。在IDLE和命令行终端中使用此选项,以查看两者的不同之处。一旦你知道哪个版本是你想要的,那么就删除另一个。您还可以删除所有python实例,然后重新安装干净的python环境,但随后必须使用pip或easy_install重新安装所有模块
python
并按enter键)Import modulename
)modulename.\uuuuu文件\uuuuu
import sys
并键入sys.executable
,以获取要导入模块的路径这种方法对我很有效。您可以在安装包后显示
pip,并了解包的安装位置
然后签入IDLEsys.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。