Python 底图脚本在 Anaconda cmd 提示符下运行,但在 VS Code 下不运行
Python Basemap script runs with Anaconda cmd prompt but not with VS Code
我正在 运行 为 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 代码的相同脚本,在相同的环境中,但导入失败:
可能是什么问题?除了环境我还应该检查什么?
根据您提供的控制台信息,原因是终端控制台没有进入conda环境。可以使用以下两种方法解决:
使用 VSCode 中的其他终端控制台。 "Ctrl+Shift+p
","Terminal:Select Default Shell
","Command Prompt
",打开一个新的终端控制台,会自动激活并进入conda环境。
在控制台使用命令“conda init powershell
”初始化conda
重新打开powershell控制台(快捷键:Ctrl+Shift+`),powershell会自动激活并进入conda环境
注:
当我使用方法 2 时,powershell 控制台显示另一个错误:“pyproj_datadir = os.environ['PROJ_LIB'] KeyError:'PROJ_LIB'
”。我修复它的方法是:使用“conda install -c conda-forge proj4
”安装proj4.
当遇到
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版本。
我正在 运行 为 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 代码的相同脚本,在相同的环境中,但导入失败:
可能是什么问题?除了环境我还应该检查什么?
根据您提供的控制台信息,原因是终端控制台没有进入conda环境。可以使用以下两种方法解决:
使用 VSCode 中的其他终端控制台。 "
Ctrl+Shift+p
","Terminal:Select Default Shell
","Command Prompt
",打开一个新的终端控制台,会自动激活并进入conda环境。在控制台使用命令“
conda init powershell
”初始化conda重新打开powershell控制台(快捷键:Ctrl+Shift+`),powershell会自动激活并进入conda环境
注:
当我使用方法 2 时,powershell 控制台显示另一个错误:“
pyproj_datadir = os.environ['PROJ_LIB'] KeyError:'PROJ_LIB'
”。我修复它的方法是:使用“conda install -c conda-forge proj4
”安装proj4.当遇到
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版本。