【问题标题】:Troubles installing mysqlclient with pip3用 pip3 安装 mysqlclient 的麻烦
【发布时间】:2017-07-27 05:25:20
【问题描述】:

我正在尝试使用 Django 设置 python 3.6 环境。安装说明说我应该安装 mysqlclient 才能连接到 mySQL。我明白了:

dennis@django:~$ sudo -H pip3 install mysqlclient
Collecting mysqlclient
  Using cached mysqlclient-1.3.10.tar.gz
    Complete output from command python setup.py egg_info:
    /bin/sh: 1: mysql_config: not found
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-4jiw3hvk/mysqlclient/setup.py", line 17, in <module>
        metadata, options = get_config()
      File "/tmp/pip-build-4jiw3hvk/mysqlclient/setup_posix.py", line 44, in get_config
        libs = mysql_config("libs_r")
      File "/tmp/pip-build-4jiw3hvk/mysqlclient/setup_posix.py", line 26, in mysql_config
        raise EnvironmentError("%s not found" % (mysql_config.path,))
    OSError: mysql_config not found

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-4jiw3hvk/mysqlclient/
You are using pip version 8.1.1, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

mySQL 已正确安装。 mysql_config 文件中应该包含什么? 当我尝试升级 pip3 时,我得到了这个:

dennis@django:~$ sudo -H pip3 install --upgrade pip3
Collecting pip3
  Could not find a version that satisfies the requirement pip3 (from versions: )
No matching distribution found for pip3
You are using pip version 8.1.1, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

用pip3安装mysqlclient后,发现模块安装在python3.5目录而不是python3.6目录,所以当我尝试导入运行python3.6的mysqldb模块时,没有找到

p>
dennis@django:~/python_db$ python
Python 3.6.0+ (default, Feb  4 2017, 11:11:46) 
[GCC 5.4.1 20161202] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'MySQLdb'
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module>
    import apport.fileutils
  File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module>
    from apport.packaging_impl import impl as packaging
  File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 23, in <module>
    import apt
  File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'

Original exception was:
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'MySQLdb'
>>> 

然后我使用 python 3.5 重新运行并找到了它。如何使用 pip3 将模块安装到 3.6 目录中?

【问题讨论】:

  • 它似乎正在尝试查找您的配置文件。你在某处(/etc/my.cnf)有一个有效的 my.cnf 文件吗?
  • 是的。 mysql.cnf 在 /etc/mysql

标签: python mysql django


【解决方案1】:

如果您使用的是 Mac OS,请尝试以下操作:

brew install mysql

如果你使用的是 Ubuntu14/16,试试这个:

sudo apt install libmysqlclient-dev

还有一个:

pip3 可以用sudo pip3 install -U pip更新

【讨论】:

  • 我在 Ubuntu 16.04 上安装了 MySQL 并且可以正常工作。我正在尝试安装一个名为 mysqlclient 的 python 模块。通过安装 libmysqlclient-dev 我能够成功安装 mysqlclient 模块升级 pip3 仍然没有运气。你写的没有用。 dennis@django:~$ sudo pip3 upgrade -U pip ERROR: unknown command "upgrade"
  • 正在安装的mysql与正在安装的mysqlclient不同。尝试升级您的 pip 和/或 apt install libmysqlclient-dev 软件包。并阅读错误消息....它明确指出安装 pip run "pip install --upgrade pip" 在你的情况下将其更改为 "pip3 install --upgrade pip"
  • 你的 Q 有 2 个 Q...所以我都回答了​​。
  • 你不必升级安装mysqlclient。
  • 还有一个,做sudo python3 -m pip install -U pip
【解决方案2】:
LDFLAGS=-L/usr/local/opt/openssl/lib pip install mysqlclient

【讨论】:

    【解决方案3】:

    在我的情况下,问题是通过执行以下操作解决的:

    sudo aptitude install libmysqlclient-dev
    

    由于我使用的是 Python 3.x,因此还需要以下内容:

    sudo aptitude install python3-dev
    

    【讨论】:

    • 使用 python3.6 我还必须运行它:sudo apt-get install libpython3.6-dev
    【解决方案4】:

    在 Debian Stretch 中,所需的包名似乎已更改为 default-libmysqlclient-dev

    https://packages.debian.org/stretch/default-libmysqlclient-dev

    【讨论】:

      【解决方案5】:

      如果您在 OSX 上运行 MAMP,请执行以下操作:

      export PATH=$PATH:/Applications/MAMP/Library/bin
      

      【讨论】:

        【解决方案6】:

        您可以尝试将 mysql 安装到特定的 python 目录,例如 w/python 3.6

        sudo python3.6 /usr/bin/pip3 install mysqlclient
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-08-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多