我一直在尝试从我创建的 conda 环境中的 jupyter notebook 使用 MySQL 数据库。
我的第一次尝试没有成功,在这里:
- 使用
sqlalchemy
- 使用
mysql-connector-python
- 使用
pymysql
我试过安装它们,其中一些使用 conda install
,一些使用 pip
,始终使用我激活的环境,我也从中安装启动我的 jupyter notebook 实例。
我得到的行为总是相同的:安装包后,我可以运行交互式 python
session ,在其中,我可以正确导入包并使用它们,甚至可以从数据库。但是,当我从笔记本上执行此操作时,找不到任何模块,这就是我被困的地方。
我看到的一些旧帖子提到它们不适用于 Python 3.x 或 Windows,或 64 位系统,但这些答案大约是 2016 年所以它们已更新,并且包的 conda 描述声称它们在我的 Windows 10、x64、python=3.6 环境中正常工作(或者我这样解释)。
环境:
- Windows 10,64 位
- python =3.6
conda 列表
:backcall 0.1.0 <pip> certifi 2018.4.16 py36_0 colorama 0.3.9 <pip> decorator 4.3.0 <pip> ipython 6.3.1 <pip> ipython-genutils 0.2.0 <pip> jedi 0.12.0 <pip> mysql-connector-python 2.0.4 py36_0 mysqlclient 1.3.12 <pip> parso 0.2.0 <pip> pickleshare 0.7.4 <pip> pip 9.0.3 py36_0 prettytable 0.7.2 <pip> prompt-toolkit 1.0.15 <pip> Pygments 2.2.0 <pip> python 3.6.5 h0c2934d_0 setuptools 39.0.1 py36_0 simplegeneric 0.8.1 <pip> six 1.11.0 <pip> SQLAlchemy 1.2.7 <pip> sqlparse 0.2.4 <pip> traitlets 4.3.2 <pip> vc 14 h0510ff6_3 vs2015_runtime 14.0.25123 3 wcwidth 0.1.7 <pip> wheel 0.31.0 py36_0 wincertstore 0.2 py36h7fe50ca_0
(一些 mysql 包不存在,因为在我尝试失败后,我删除了它们。)
如何让笔记本找到模块以便连接到 MySQL?
最佳答案
通过 Chris 在评论中提供的链接,我能够弄明白。 (非常感谢!)
第一步是验证 jupyter 是否在环境安装它们的同一位置寻找笔记本。一个简单的方法是:
在控制台上:
activate myEnv
python
>>> import sys
>>> sys.executable
'C:\\Users\\myUser\\Anaconda3\\envs\\myEnv\\python.exe'
在 jupyter 内部:
import sys
sys.executable
'C:\\Users\\myUser\\Anaconda3\\python.exe'
如您所见,在这种情况下,jupyter 在环境的外部 运行,这就是它找不到已安装包的原因。
但是——为什么会这样呢?在启动 jupyter 之前,我正在激活环境。有没有可能我不小心运行了错误版本的 Jupyter?
where jupyter
C:\Users\myUser\Anaconda3\Scripts\jupyter.exe
啊——我运行的 jupyter 版本有误。那一定是因为我环境中没有安装jupyter。
conda install jupyter
# ... installation process ...
where jupyter
C:\Users\myUser\Anaconda3\envs\myEnv\Scripts\jupyter.exe
C:\Users\myUser\Anaconda3\Scripts\jupyter.exe
所以现在,环境 jupyter 可执行文件应该优先。执行 jupyter 后,行为符合预期,sys.executable
返回预期路径。
关于mysql - 在 Jupyter 笔记本、Conda 环境、Python 3.6 上找不到 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50092544/