【问题标题】:Python Basemap script runs with Anaconda cmd prompt but not with VS CodePython Basemap 脚本使用 Anaconda cmd 提示符运行,但不使用 VS Code
【发布时间】:2020-09-15 15:29:07
【问题描述】:

我正在运行 python 底图的示例脚本。这是脚本:

import sys
print("Running on = ", sys.executable)
from mpl_toolkits.basemap import Basemap
import numpy as np
import matplotlib.pyplot as plt
# setup lambert azimuthal equal area basemap.
# lat_ts is latitude of true scale.
# lon_0,lat_0 is central point.
m = Basemap(width=12000000,height=8000000,
            resolution='l',projection='laea',\
            lat_ts=50,lat_0=50,lon_0=-107.)
m.drawcoastlines()
m.fillcontinents(color='coral',lake_color='aqua')
# draw parallels and meridians.
m.drawparallels(np.arange(-80.,81.,20.))
m.drawmeridians(np.arange(-180.,181.,20.))
m.drawmapboundary(fill_color='aqua') 
# draw tissot's indicatrix to show distortion.
ax = plt.gca()
for y in np.linspace(m.ymax/20,19*m.ymax/20,9):
    for x in np.linspace(m.xmax/20,19*m.xmax/20,12):
        lon, lat = m(x,y,inverse=True)
        poly = m.tissot(lon,lat,1.5,100,\
                        facecolor='green',zorder=10,alpha=0.5)
plt.title("Lambert Azimuthal Equal Area Projection")
plt.show()

我通过在“底图”环境中从 Anaconda 提示符调用它来运行它,它可以工作:

现在我在同一环境中从 Visual Studio Code 运行相同的脚本,但导入失败:

问题可能是什么?除了环境,我还应该检查什么?

【问题讨论】:

  • 您使用的模块“pyproj”的版本是什么?根据你提供的代码,我可以在VSCode中运行,我使用的“pyproj”版本是1.9.6。
  • pip list命令中的版本为:pyproj==2.6.1.post1
  • 我尝试使用“pyproj==2.6.1.post1”,它也可以运行。您正在使用的模块“matplotlib”和“basemap”的版本号是多少?我使用的模块“matplotlib”的版本号是3.1.0,底图是1.2.0。另外,建议您在当前conda环境下尝试重新安装“basemap”模块。
  • 我尝试用你的配置创建一个新环境,现在导入失败是另一个:File "C:...\mpl_toolkits\basemap\__init__.py", line 48, in <module> import _geoslib ImportError: DLL load failed: The specified module could not be found.。这在 VS 代码中。当我尝试通过从 Anaconda 提示符调用来运行它时,它又可以工作了。我不明白我的 Visual Studio 出了什么问题...

标签: python visual-studio-code anaconda matplotlib-basemap


【解决方案1】:

根据你提供的控制台信息,原因是终端控制台没有进入conda环境。可以使用以下两种方法解决:

  1. 在 VSCode 中使用其他终端控制台。 "Ctrl+Shift+p","Terminal:Select Default Shell","Command Prompt",打开一个新的终端控制台,它会自动激活并进入conda环境。

  2. 在控制台使用命令“conda init powershell”初始化conda。

    重新打开powershell控制台(快捷键:Ctrl+Shift+`),powershell会自动激活并进入conda环境。

注意:

  1. 当我使用方法 2 时,powershell 控制台显示另一个错误:“pyproj_datadir = os.environ['PROJ_LIB'] KeyError:'PROJ_LIB'”。我修复它的方法是:使用“conda install -c conda-forge proj4”安装proj4。

  2. 遇到时

from matplotlib.cbook import dedent
ImportError: cannot import name 'dedent' from 'matplotlib.cbook' (D:\Users\...\Anaconda3\envs\basemap\lib\site-packages\matplotlib\cbook\__init__.py)

,表示“matplotlib”版本不兼容,请使用“conda install matplotlib==3.1”安装3.1版本。

参考:conda in powershellKeyError 'PROJ_LIB

【讨论】:

  • 我也必须这样做conda install -c conda-forge matplotlib-base==3.1。谢谢,VS Code 中的 cmd 提示解决了。
猜你喜欢
  • 1970-01-01
  • 2020-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-20
  • 1970-01-01
相关资源
最近更新 更多