Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用pyinstaller创建可执行文件时如何处理pyproj datadir/CRS错误_Python_Pyinstaller_Geopandas_Proj_Pyproj - Fatal编程技术网

Python 使用pyinstaller创建可执行文件时如何处理pyproj datadir/CRS错误

Python 使用pyinstaller创建可执行文件时如何处理pyproj datadir/CRS错误,python,pyinstaller,geopandas,proj,pyproj,Python,Pyinstaller,Geopandas,Proj,Pyproj,我正在创建的程序旨在创建多个邮政编码内的多个点,并查找从这些点到每个邮政编码内的每个点的距离,这些点位于感兴趣的邮政编码的5英里范围内。这是通过利用谷歌地图距离矩阵服务和捕捉距离数据来实现的。我创建了一个很长的函数,它可以做很多事情(我认为它需要进一步分解)。我认为问题就在这里 但是,当我使用Pyinstaller创建一个可执行文件时,当它第一次加载时,以及当我尝试运行程序的主功能时,我会收到几个错误。错误似乎集中在pyproj和geopandas上 我在其他一些地方也看到过这个问题。我无法成功

我正在创建的程序旨在创建多个邮政编码内的多个点,并查找从这些点到每个邮政编码内的每个点的距离,这些点位于感兴趣的邮政编码的5英里范围内。这是通过利用谷歌地图距离矩阵服务和捕捉距离数据来实现的。我创建了一个很长的函数,它可以做很多事情(我认为它需要进一步分解)。我认为问题就在这里

但是,当我使用Pyinstaller创建一个可执行文件时,当它第一次加载时,以及当我尝试运行程序的主功能时,我会收到几个错误。错误似乎集中在pyproj和geopandas上

我在其他一些地方也看到过这个问题。我无法成功地应用在这些地方讨论的解决方案。提出的解决方案包括:

  • 将pyproj降级至1.9.6-见下面的错误

  • 在pyinstaller中添加一个钩子文件-目录中已经有一个钩子文件

  • 在创建的规范文件的隐藏导入部分包括pyproj.\u datadir和pyproj.datadir

  • 使用os.environ['PROJ_LIB'],并将其设置为位于“/share”的共享文件夹

我使用的软件包:

将熊猫作为pd导入
将tkinter作为tk导入
导入tkinter.filedialog
导入操作系统
作为gpd导入geopandas
从shapely.geometry导入点,LineString
导入shapely.wkt
导入谷歌地图
从googlemaps.exceptions导入ApiError
导入日期时间
从统计进口中位数
导入线程
等级库文件:


#-*-模式:python-*-
分组密码=无
a=分析(['main.py'],
pathex=['C:\\Users\\Keagan\\PycharmProjects\\upwork\U jobs\\pet\U sitting2\\gui'],
二进制文件=[],
数据=[],
hiddenimports=['fiona.\u shim'、'fiona.schema'、'pyproj.\u datadir'、'pyproj.datadir'],
hookspath=[],
运行时挂钩=[],
不包括=[],
win\u no\u Preference\u redirects=False,
win_private_assemblies=False,
密码=分组密码,
无存档=假)
pyz=pyz(a.pure,a.zipped_数据,
密码=分组密码)
exe=exe(pyz,
a、 剧本,
[],
exclude_binaries=True,
name='main',
debug=False,
引导加载程序\u忽略\u信号=False,
strip=False,
upx=真,
控制台=真)
coll=COLLECT(exe,
a、 二进制文件,
a、 拉链,
a、 数据,
strip=False,
upx=真,
name='main')
主要功能:

def模型距离(自身、参考名称列表、参考拉链df、拉链和点gdf、api密钥):
gmaps=googlemaps.Client(api_键)
def查找键值连接(poi、to位置、目录列表):
对于目录列表中的项目:
如果poi==item[“poi”]和to_location==item[“to_location”]或to_location==item[
“poi”]和poi==\
项目[“收件人位置”]:
返回真值
返回错误
def投影(原点投影、到投影、几何体对象):
项目=部分(
pyproj.transform,
pyproj.Proj(初始=原点投影),
pyproj.Proj(init=to_投影)
)
返回变换(项目、几何体和对象)
邮政编码相交列表=[]
已完成的\u位置\u dict={}
已完成的位置列表=[]
计数=0
谷歌信用卡计数=0
已完成\u位置\u df=无
缓冲区列表=[]
对于参考名称列表中的名称:
打印(“我们在:{}”。格式(名称))
如果os.path.isfile(“output_files/completed_locations_{}.xlsx”.format(name))和completed_locations_df为无:
打印(“找到备份,打开它”)
completed_locations_df=pd.read_excel(“output_files/completed_locations_{}.xlsx”.format(name))
对于已完成位置中的项目
已完成的位置dict[“poi”]=int(item.poi)
已完成的位置记录[“至位置”]=int(项目至位置)
已完成的位置目录[“poi\U zip”]=item.poi\U zip
已完成的地址记录[“至邮政编码”]=项目。至邮政编码
已完成的位置目录[“poi\U名称”]=item.poi\U名称
已完成的\u位置\u目录[“至\u名称”]=项。至\u名称
已完成的位置目录[“id”]=项目id
已完成的位置dict[“距离”]=浮动(项目距离)
已完成的位置记录[“时间”]=浮动(项目时间)
已完成的\u位置\u列表.append(已完成的\u位置\u dict.copy())
elif not os.path.isfile(“输出文件/完成位置”{}.xlsx.format(name)):
打印(“创建备份”)
已完成\u位置\u df=pd.DataFrame()
完成的位置到excel(“完成的位置”{}.xlsx.format(name))
对于参考_zips_df.itertuples()中的zip:
如果zip.name==名称:
打印(“我们使用的是zipcode:{}.format(zip.zip))
对于zips_和_points_gdf.itertuples()中的poi:
如果str(poi.zip_left)==str(zip.zip):
buffer=“”
poi_-zip=“”
如果poi_zip==None或poi.zip_left!=poi_zip:
poi_zip=左poi.zip
buffer=shapely.wkt.load(poi.zip\u center\u point)。buffer(8046)
buffer\u list.append(缓冲区)
对于zips_和_points_gdf.itertuples()中的to_位置:
UnsatisfiableError: The following specifications were found to be incompatible with each other:
Warning:
The MATPLOTLIBDATA environment variable was deprecated in Matplotlib 3.1 and will be removed in 3.3.
  exec(bytecode, module.__dict__)
Traceback (most recent call last):
  File "site-packages\pyproj\datadir.py", line 101, in get_data_dir
pyproj.exceptions.DataDirError: Valid PROJ data directory not found.Either set the path using the environmental variable PROJ_LIB or with `pyproj.datadir.set_data_dir`.
Exception ignored in: 'pyproj._datadir.get_pyproj_context'
Traceback (most recent call last):
  File "site-packages\pyproj\datadir.py", line 101, in get_data_dir
pyproj.exceptions.DataDirError: Valid PROJ data directory not found.Either set the path using the environmental variable PROJ_LIB or with `pyproj.datadir.set_data_dir`.
proj_create: Cannot find proj.db
proj_create: init=epsg:/init=IGNF: syntax not supported in non-PROJ4 emulation mode
Invalid projection: +init=epsg:4326 +type=crs
<code that runs fine before>


Traceback (most recent call last):
  File "site-packages\pyproj\datadir.py", line 101, in get_data_dir
pyproj.exceptions.DataDirError: Valid PROJ data directory not found.Either set the path using the environmental variable PROJ_LIB or with `pyproj.datadir.set_data_dir`.
Exception ignored in: 'pyproj._datadir.get_pyproj_context'
Traceback (most recent call last):
  File "site-packages\pyproj\datadir.py", line 101, in get_data_dir
pyproj.exceptions.DataDirError: Valid PROJ data directory not found.Either set the path using the environmental variable PROJ_LIB or with `pyproj.datadir.set_data_dir`.
proj_create: Cannot find proj.db
proj_create: init=epsg:/init=IGNF: syntax not supported in non-PROJ4 emulation mode
Unhandled exception in thread started by <bound method ZipAnalysisGUI.analyze_data of <__main__.ZipAnalysisGUI object at 0x000001DAAD51A668>>
Traceback (most recent call last):
  File "main.py", line 480, in analyze_data
  File "main.py", line 237, in model_distances
  File "main.py", line 157, in projection
  File "site-packages\pyproj\proj.py", line 147, in __init__
  File "site-packages\pyproj\crs.py", line 391, in from_user_input
  File "site-packages\pyproj\crs.py", line 260, in __init__
  File "pyproj/_crs.pyx", line 1292, in pyproj._crs._CRS.__init__
pyproj.exceptions.CRSError: Invalid projection: +init=epsg:26910 +type=crs