python安装
python安装过程
官网下载安装包
安装python
- 运行python-3.8.2.exe(举了栗子)
- 修改安装路径
- 将python加入到环境变量中
-
- 在环境变量的path中,添加 x:\yyy\python3.8.2 和 x:\yyy\python3.8.2\Scripts\
- cmd + python/py即可实现
多个python版本共存
- 在环境变量的path中,添加新的 x:\yyy\python2.7 和 x:\yyy\python2.7\Scripts\即可
- 记得把python2目录下的python.exe改名为python2.exe
对指定python版本安装\卸载相应库
- 安装指定的python库 pip install XXX==x.y.z
- 卸载指定的python库 pip uninstall XXX==x.y.z
- 指定python版本下安装 \ 卸载库方法1:打开cmd命令窗口, 进入自己安装python路径下的Scripts路径:
- 指定python版本下安装 \ 卸载库方法2:直接在python的Scripts路径上方的路径文件夹输入cmd,然后直接pip install xxx即可
Bug
Python2出错
编码错误
SyntaxError: Non-ASCII character '\xe5' in file G:/xxx/python2/test.py on line 8,
but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
语法错误:第8行的G:/xxx/python2/test.py文件中的非ASCII字符'\ xe5',
但未声明编码;有关详细信息,请参见http://www.python.org/peps/pep-0263.html
对错误的解读(不一定对系列)
- python2默认ASCII编码、解码文件。ASCII中不包含中文,所以我们需要将python2的编码由默认的ASCII,改为万国码(utf-8)
解决方法
# !/usr/bin/env python
# -*- coding:utf-8 -*-
arcpy库出错
路径报错
# 假如说路径是r'Z:\xxx\工作\大块\ZF副本 - 副本'
Traceback (most recent call last):
File "G:\WuDownload\python2\ɾ���ֶ�.py", line 18, in <module>
fieldList = arcpy.ListFields(shpFileMap)
File "C:\Program Files\ArcGIS\Server\arcpy\arcpy\__init__.py", line 1119, in ListFields
return gp.listFields(dataset, wild_card, field_type)
File "C:\Program Files\ArcGIS\Server\arcpy\arcpy\geoprocessing\_base.py", line 344, in listFields
self._gp.ListFields(*gp_fixargs(args, True)))
RuntimeError: ERROR 999999: Error executing function.
对错误的解读(不一定对系列)
- arcpy在使用 含空格路径 时会报错, python2用的比较少,未去深究是arcpy的原因还是python2的原因,待以后填坑吧
解决方法
# 将路径改为r'Z:\xxx\工作\大块\ZF副本-副本' 即可。
Python3出错
shapeFile库出错
dbf文件的数据条数和shp文件的要素条数不一致
shapefile.ShapefileException: When saving both the dbf and shp file, the number of records (79805) must correspond with the number of shapes (0)
对错误的解读(不一定对系列)
- 意思就是dbf里有79805个数据,而shp的要素(点、线、面)条数为0。
- 需要添加要素(点、线、面)条数即可
- 在本次实践中,发现一个问题,在对rshp文件读取时,读取完要素的数据再读取dbf的数据时,第一次读取一行数据时是正确的,第二次就错误了,我判定读取到的dbf文件数据发生了移位。我提供的解决方法是重读rShp这个对象。
解决方法
对于面要素来说:
for i in range(rShp.numRecords):
# 重读rShp对象的文件
rShp = shapefile.Reader(mapBaseFile)
# rShp为读shp文件的对象
baseLinkPoint = [[list(x) for x in rShp.shape(i).points]]
# print(baseLinkPoint)
'''
形如这样的内容
[[[1474134.4974841978, 4442678.2770431675],
[1474138.1428716443, 4442679.826245229],
[1474140.1595595686, 4442683.317672637],
[1474134.4974841978, 4442678.2770431675]]]
'''
# wShp为写shp文件的对象,添加shp文件的要素
wShp.poly(baseLinkPoint)
# 往dbf文件添加数据
wShp.record(rShp.record(i)[0],
rShp.record(i)[1],
rShp.record(i)[2],
rShp.record(i)[3],
rShp.record(i)[4],
rShp.record(i)[5])
# 删除rShp变量
del rShp
数据类型
元组未加" , "
# 配置静态资源
STATIC_URL = '/static/'
STATICFILES_DIRS = (
# 根目录 文件名
os.path.join(BASE_DIR, 'pstatic')
)
STATIC_ROOT = os.path.join(BASE_DIR, 'AllStatic')
-----------------------------------------------------------------
ERRORS:
?: (staticfiles.E001) The STATICFILES_DIRS setting is not a tuple or list.
HINT: Perhaps you forgot a trailing comma?
System check identified 1 issue (0 silenced).
对错误的解读(不一定对系列)
- 当你使用了元组,但是当前元组只有一个数,如果只是单纯的"(A)",python会认为这只是一个普通的变量。然后你再用读取元组的方式去使用他的话,他当然就会报错啦
解决方法
# 配置静态资源
STATIC_URL = '/static/'
STATICFILES_DIRS = (
# 根目录 文件名
# 在这里加一个 " , "
os.path.join(BASE_DIR, 'pstatic'),
)
STATIC_ROOT = os.path.join(BASE_DIR, 'AllStatic')
读取文件错误
utf-8不包含,而gbk包含
# 读取Shp数据
# 在创建读对象的时候不会报错,当你读取到某一数值时,例如 ü 时,会报错
rShp = shapefile.Reader(mapShpFile)
-----------------------------------------------------------------
'utf-8' codec can't decode byte 0xa8 in position 2: invalid start byte
对错误的解读(不一定对系列)
GBK主要用于中文编码,包含全部中文字符,utf8包含全世界所有国家需要用到的字符;
解决方法
# 读取Shp数据
rShp = shapefile.Reader(mapShpFile, encoding='gbk')