在jupyter笔记本、conda环境、python3.6上找不到mysql

ewm0tg9j  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(375)

我一直在尝试从我创建的conda环境中使用jupyter笔记本中的mysql数据库。
我的第一次尝试没有成功,在这里:
使用 sqlalchemy 使用 mysql-connector-python 使用 pymysql 我试过安装它们,有些是用 conda install ,其中一些使用 pip ,始终使用我激活的环境,从中我还启动了我的jupyter笔记本示例。
我得到的行为总是一样的:在安装包之后,我可以运行一个交互式的 python 在会话中,我可以正确地导入和使用包,甚至从数据库中获得结果。但是当我在笔记本上做的时候,没有一个模块被找到,这就是我被卡住的地方。
我看到的一些旧帖子提到,它们不适用于Python3.x或windows,也不适用于64位系统,但这些答案大约在2016年更新,因此这些软件包的conda描述声称它们在我的Windows10、x64、python=3.6环境中正常工作(或者我解释的那样)。
环境:
windows 10,64位
python=3.6 conda list :

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?

c9x0cxw0

c9x0cxw01#

有了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 返回预期路径。

相关问题