最近在PC上更新了Anaconda和PyCharm到它们最新版本,尴尬了,二者兼容性不好,使用中遇到了新问题,搜索半天也没有最终完美解决,不过总算能运行了,在此总结一下踩过的坑。
软件版本
截至目前(12/28/2018)都是最新版:
Anaconda 2018.3
PyCharm 2018.3.2
下面列一些遇到的坑和解决办法。
1. PyCharm创建新项目时,如果Project Interpreter选择 New Environment using Virtualenv, 则PyCharm会调用它内部自带的virtualenv来创建虚拟环境,里面的pip是固定的10.0.1版本,要知道pip最新版本都是18.1了。这个还可以忍,因为pip就是个下载工具,能用的情况下可以不动,就是得忍受不停提示:
我试着运行它提示的命令来更新pip,更新失败,报了一堆错误,放弃尝试。
2.在PyCharm里,无论是用virtualenv还是conda创建的虚拟环境,打开project后,在PyCharm IDE底部的Terminal里运行任何pip install命令都会报错,因为SSL问题而无法下载。Python Console也无法显示,报错:
解决办法搜索了半天,发现PyCharm不要直接双击图标启动 ,而是需要从Anaconda Prompt命令行启动,试了下,果然成功。输入如下命令启动,注意路径里因为有空格,所以要加双引号:
3. 这个坑也是被人反映过的。Anaconda可以自己使用conda命令创建虚拟环境:
conda create -n venv python[=3.6]
第一个坑就是参数不止要加-n name,还要写上python(
版本不写的话默认是最新版python),否则生成的env里面没有可执行程序python.exe。这个和virtualenv name 命令不一样,
virtualenv 默认可以不指定版本,最简单格式就是只有一个虚拟环境名即可运行:virtualenv envName。不过它也可指定在虚拟环境里想要用的python版本:
virtualenv --python=/usr/bin/python2.6 <path/to/myvirtualenv>
另一个坑是当你在用conda创建后的虚拟环境venv里面再用pip install的方式添加packages后,在Anaconda-navigator程序里面的Environments里面, packages 列表并不会更新,查阅网页后发现是个老问题了,它这里只显示用conda install 安装的packages,而不显示pip install的packages。不过好在 有Anaconda Prompt窗口,它里面运行conda list 或者pip freeze 都可以正确显示全部的packages。
4. 折腾过程中我尝试卸载了最新版Anaconda,改装前一个版本 Anaconda3-5.3.1-Windows-x86_64.exe后, 此版本就没有上述虚拟环境里导致pip无法访问的SSL问题, 在虚拟环境里也可以用pip安装包,因此看来还是Anacodna的问题。
最后总结一下:
1. Pycharm和Anaconda可以都使用最新版,但是需要在Anaconda Prompt里启动PyCharm。
2. 如果不想麻烦,就可以安装前一个版本的Anaconda,并且不要更新它。
附录:
目前创建python虚拟环境可以使用conda或者virtualenv。大致整理它们的命令如下:
conda create -n envName python[=3.6] 创建虚拟环境
conda env list 列出所有由conda创建的虚拟环境和路径
conda env remove -n envName 移除虚拟环境
conda list [pkgName] 列出当前环境下所有已安装包,可以加名字进行过滤,支持正则匹配
conda activate envName 激活虚拟环境。激活后在虚拟环境里执行
conda deactivate 则退出该虚拟环境。
virtualenv --python=PathToPythonBin envName 创建虚拟环境并指定python版本,可以加--no-site-packages.
/scrpts/activate 激活
/scripts/deactivate
洛冰河
终于找到这个问题了, 感谢!
匿名
终于见了一个有用的解决方案了