【问题标题】:python, linux- (PY1001): Unable to install package(s) 'mysql.connector'. Reason: Can't find a pure Python 3 Wheel for package(s) 'mysql.connector'python, linux- (PY1001): 无法安装包 \'mysql.connector\'。原因:找不到包 \'mysql.connector\' 的纯 Python 3 Wheel
【发布时间】:2023-01-12 17:10:49
【问题描述】:

错误信息:

(PY1001):无法安装包“mysql.connector”。原因:找不到包“mysql.connector”的纯 Python 3 Wheel。有关详细信息,请参阅:https://pyodide.org/en/stable/usage/faq.html#micropip-can-t-find-a-pure-python-wheel。

website error showing (pic)

  • .html 脚本
    该脚本试图使用 python 从 MySQL 数据库收集数据,并显示在网页中。

已经确保我安装了 pymysql 和 mysql-connector-python

<html>
    <head>
      <link rel="stylesheet" href="https://pyscript.net/latest/pyscript.css" />
      <script defer src="https://pyscript.net/latest/pyscript.js"></script>
    </head>

  <body>
    <b><p>title <u><label id="AAA"></label></u> </p></b>
    <br>
  
    <py-config>

      packages = ["mysql.connector"]
    </py-config>


    <py-script>
        import mysql.connector

        mydb = mysql.connector.connect(
          host="196.168.100.141",
          user="root",
          password="password123", 
          database="database_db",  
          auth_plugin='mysql_native_password'
        )
                        
        mycursor = mydb.cursor()
        mycursor.execute("SELECT row_01 FROM database")                       
                                                 
        myresult = mycursor.fetchall()
        
        list_01 = []
        
        for row in myresult:
          temp_val = row[0]
          list_01.append(temp_val)
    </py-script>
  </body>
</html>

我通读了解决方案Unable to install mysql connector for Python 3

是使用 pip install --allow-external mysql-connector-python mysql-connector-python ,但需要 pip 版本 8,它很旧,现在不能用,ps 讨论是 7 年前


  • 显示所有安装的附加信息
[root@localhost ~]# pip show pymysql
Name: PyMySQL
Version: 1.0.2
Summary: Pure Python MySQL Driver
Home-page: https://github.com/PyMySQL/PyMySQL/
Author: yutaka.matsubara
Author-email: yutaka.matsubara@gmail.com
License: "MIT"
Location: /usr/local/lib/python3.6/site-packages
Requires:
Required-by:
[root@localhost ~]# pip show mysql-connector-python
Name: mysql-connector-python
Version: 8.0.31
Summary: MySQL driver written in Python
Home-page: http://dev.mysql.com/doc/connector-python/en/index.html
Author: Oracle and/or its affiliates
Author-email:
License: GNU GPLv2 (with FOSS License Exception)
Location: /usr/local/lib/python3.6/site-packages
Requires: protobuf
Required-by:
[root@localhost ~]# pip list
Package                Version
---------------------- -------
mysql-connector        2.2.9
mysql-connector-python 8.0.31
pip                    21.3.1
protobuf               3.19.6
PyMySQL                1.0.2
setuptools             59.6.0

我可能需要其他解决方案,如何处理这个


更新: update error picture

  • 错误信息
Traceback (most recent call last):
  File "/lib/python3.10/site-packages/mysql/connector/network.py", line 567, in open_connection
    self.sock.connect(sockaddr)
BlockingIOError: [Errno 26] Operation in progress

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/lib/python3.10/site-packages/_pyodide/_base.py", line 435, in eval_code
    .run(globals, locals)
  File "/lib/python3.10/site-packages/_pyodide/_base.py", line 304, in run
    coroutine = eval(self.code, globals, locals)
  File "<exec>", line 3, in <module>
  File "/lib/python3.10/site-packages/mysql/connector/pooling.py", line 287, in connect
    return MySQLConnection(*args, **kwargs)
  File "/lib/python3.10/site-packages/mysql/connector/connection.py", line 137, in __init__
    self.connect(**kwargs)
  File "/lib/python3.10/site-packages/mysql/connector/abstracts.py", line 1108, in connect
    self._open_connection()
  File "/lib/python3.10/site-packages/mysql/connector/connection.py", line 533, in _open_connection
    self._socket.open_connection()
  File "/lib/python3.10/site-packages/mysql/connector/network.py", line 569, in open_connection
    raise InterfaceError(
mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on '196.168.100.141:3306' (26 Operation in progress)

我确定 py 脚本部分,也就是 mydb 输入信息是正确的,我使用 simple .py script 可以连接并打印 MySQL 输出

    <py-script>
        import mysql.connector

        mydb = mysql.connector.connect(
          host="196.168.100.141",
          user="root",
          password="password123", 
          database="database_db",  
          auth_plugin='mysql_native_password'
        )
                        
        mycursor = mydb.cursor()
        mycursor.execute("SELECT row_01 FROM database")                       
                                                 
        myresult = mycursor.fetchall()
        
        list_01 = []
        
        for row in myresult:
          temp_val = row[0]
          list_01.append(temp_val)
    </py-script>

【问题讨论】:

    标签: python mysql python-3.x linux pip


    【解决方案1】:

    您使用的是PyScript框架,其中Python安装在第三方服务的服务器端,与您本地的Python安装无关。

    根据 PyScript 的 Importing the needed libraries 文档,您应该使用 py-config 标记声明您希望安装的库,您有一些标记,但是使用包名称 mysql-connector-python,而不是模块名称 mysql.connector:

    packages = ["pymysql", "mysql-connector-python"]
    

    这会运行,但不会从服务器端连接到 IP 地址为 196.168.100.141 的数据库,因为它可能仅在您的局域网中可用:

    <html>
        <head>
          <link rel="stylesheet" href="https://pyscript.net/latest/pyscript.css" />
          <script defer src="https://pyscript.net/latest/pyscript.js"></script>
        </head>
    
      <body>
        <b><p>title <u><label id="AAA"></label></u> </p></b>
        <br>
      
        <py-config>
    
          packages = ["pymysql", "mysql-connector-python"]
        </py-config>
    
    
        <py-script>
            import mysql.connector
    
            mydb = mysql.connector.connect(
              host="196.168.100.141",
              user="root",
              password="password123", 
              database="database_db",  
              auth_plugin='mysql_native_password'
            )
                            
            mycursor = mydb.cursor()
            mycursor.execute("SELECT row_01 FROM database")                       
                                                     
            myresult = mycursor.fetchall()
            
            list_01 = []
            
            for row in myresult:
              temp_val = row[0]
              list_01.append(temp_val)
        </py-script>
      </body>
    </html>

    【讨论】:

    • 嗨@blhsing,按照你的解决方案,我更新了那个问题的帖子,请看一下
    猜你喜欢
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    • 1970-01-01
    • 2019-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多