【问题标题】:No module named 'mysql'没有名为“mysql”的模块
【发布时间】:2023-03-05 20:39:02
【问题描述】:

我创建了一个 Python 脚本来在 MySQL 中存储数据。它在 PyCharm 中正常工作。当转换为exe 文件时,它不起作用。

这是来自命令行的回溯:

Traceback (most recent call last):
  File "myscript.py", line 1, in <module>
    import mysql.connector
ModuleNotFoundError: No module named 'mysql'
[8428] Failed to execute script 'myscript' due to unhandled exception!

创建exe的命令:

pyinstaller --onefile --console CoinVolumes.py

我也尝试了auto-py-to-exe,但遇到了同样的错误。 mysql 已安装完毕。

【问题讨论】:

  • 我之前不得不通过--hidden-import 使用pyinstaller 添加模块,但这一直是因为我使用的东西不是直接在代码中导入的。我敢打赌,问题与 pyinstaller 搜索路径有关。只是没有看到mysql,即使它在那里。

标签: python mysql pyinstaller exe


【解决方案1】:

在 Python 3.6.9 中,我可以使用 Pip 3 并执行以下操作:

pip3 install mysql
pip3 install mysql-connector-python

【讨论】:

  • 嘿,不,我使用的是 Python 3.10.0
  • 对不起,我读了另一个人的评论,上面写着 2.7.11。我使用 Python 3.6.9 并且刚刚尝试过:pip3 install mysql。我还看到 pip3 install mysql-connector-python
  • 是的,我都安装了,但还是一样的。
  • 所以它们已安装,但 Python 找不到文件。在这种情况下,计算文件的绝对路径并首先执行:import sys, sys.path.append('/path/to/the/mysql-library'), import mysql... 或者更高的 1 个目录。
【解决方案2】:

使用这个命令:

pip install mysql-connector-python

之后验证:

$ python
Python 2.7.11 (default, Apr 26 2016, 13:18:56)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-54)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import mysql.connector
>>>

【讨论】:

  • 已安装:``` Python 3.10.0 (tags/v3.10.0:b494f59, Oct 4 2021, 19:00:18) [MSC v.1929 64 bit (AMD64)] on win32输入“帮助”、“版权”、“信用”或“许可”以获取更多信息。```
  • 导入? @ArūnasVyšniauskas
  • Python 3.10.0 (tags/v3.10.0:b494f59, Oct 4 2021, 19:00:18) [MSC v.1929 64 bit (AMD64)] on win32 键入“help”,“版权”、“学分”或“许可”以获取更多信息。 >>> 导入 mysql.connector >>>
  • 所以它应该可以工作@ArūnasVyšniauskas
【解决方案3】:

您需要自己运行 mysql 服务器。 Pyinstaller 工作正常,这里的问题是 mysql 服务器不是 python 的一部分,因此您需要手动启动服务器。另一种方法是使用 sqlite,它不需要服务器。它内置在标准python中,无需安装任何东西。

【讨论】:

  • 服务器在我的电脑上打开了,但我仍然得到同样的错误。
  • 那么问题出在您的环境中已安装的软件包中,如其他答案中所述。 Maibe重新安装mysql和mysql-connector-python,然后再试一次。在执行 pyinstaller 之前,请确保您处于正确的环境中
  • 它正在使用 PyCharm,所以我猜 Mysql 数据库是从 dev.mysql.com(或 MariaDB)安装的。 SqlLite 仅适用于小型数据库,或者在保存之前在 RAM 中使用。它变得非常慢,因为每次更改都需要将整个数据库重新写入磁盘。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-13
  • 1970-01-01
  • 1970-01-01
  • 2013-07-11
  • 2020-03-09
  • 2019-06-27
  • 1970-01-01
相关资源
最近更新 更多