【问题标题】:Python can find a module....and then it can'tPython可以找到一个模块......然后它不能
【发布时间】:2015-10-05 06:18:11
【问题描述】:

我终于开始全力投入使用 Python,但由于某种原因,我遇到了一个问题,即 Python 可以在交互式 CLI 中找到一个模块,然后在我编写脚本时却找不到。该模块特别是 mysql.connector 位于 /Library/Python/2.7/site-packages 。从交互式 CLI 会话中可以看到,它导入 mysql.connector 就好了。回显 sys.path 显示 'Library/Python/2.7/site-packages'

这是一个新的 CLI 窗口(我使用的是 Mac 10.10)。注意:最初当我登录时,我会弹出到我的主目录,这当然是正常的。

wilkie:~ wilkie$ which python
/usr/bin/python
wilkie:~ wilkie$ python
Python 2.7.6 (default, Sep  9 2014, 15:04:36) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> import mysql.connector
>>> sys.path
['', '/Library/Python/2.7/site-packages/pip-7.1.0-py2.7.egg', '/Library/Python/2.7/site-packages/cx_Oracle-5.2-py2.7-macosx-10.10-intel.egg', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC', '/Library/Python/2.7/site-packages']
>>>

所以我只是换了一个目录...

cd /Users/wilkie/Projects/dataparse

就这样......它找不到 mysql.connector

wilkie:dataparse wilkie$ python
Python 2.7.6 (default, Sep  9 2014, 15:04:36) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/Library/Python/2.7/site-packages/pip-7.1.0-py2.7.egg', '/Library/Python/2.7/site-packages/cx_Oracle-5.2-py2.7-macosx-10.10-intel.egg', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC', '/Library/Python/2.7/site-packages']
>>> import mysql.connector
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "mysql.py", line 1, in <module>
    import mysql.connector
ImportError: No module named connector
>>>

我被官方难住了,不知道为什么会这样。有人遇到过吗?

【问题讨论】:

  • 你是怎么安装的? import mysql;mysql.__file__ 输出什么?
  • 您的dataparse 目录中是否有一个名为mysql.py 的模块?
  • 请执行cd /Users/wilkie/Projects/dataparse,然后执行ls 命令,让我们知道输出是什么。
  • @JaneWIlkie,来自非工作目录?确保仅import mysql
  • @JaneWIlkie,删除任何 .pyc 文件,否则您将再次遇到同样的问题

标签: python python-2.7 mysql-python python-module


【解决方案1】:

您的主目录或新目录中有一个mysql 或其他东西。它可能是一个.py 文件,也可能是实际的包(在错误的位置;)。解决这个问题,您的问题就会消失。

【讨论】:

    【解决方案2】:

    在回溯中,我看到您将文件命名为 mysql.py。因此,当您尝试从mysql.py 导入某些内容时,解释器会在您自己的脚本中查找它,而不是在“实际”模块中查找。它没有撒下更大的网,而是立即放弃。要解决此问题,请将您的脚本重命名为不掩盖任何模块名称的名称。

    【讨论】:

    • 你的答案完全正确,不知道你为什么被否决。
    • @TigerhawkT3 你被否决的原因对我来说也是个谜。我可以告诉你 Ethan,在我投票给你 0 之前,你也是 -1,这没有意义,因为你也有正确的答案。
    猜你喜欢
    • 2021-08-16
    • 2016-05-23
    • 2020-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    • 1970-01-01
    相关资源
    最近更新 更多