pypy 打包_手机按键精灵脚本编写

pypy 打包_手机按键精灵脚本编写我们可以在ArcGIS之外调用arcpy站点包运行python独立脚本,从而批量化任务提高工作效率。如果可以把做好的脚本打包成exe是不是就更方便了呢?想想一键式处理也挺开心的。Python打包的问题最早是在ArcGIS知乎中看到的,有人提问为何打包失败,我还有幸被邀请回答,虽然在这一块我也是小白一枚。后来,得空时也搜了下相关的资源,虽然大部分人持悲观态度说arcpy不支持打包,但刚好有个帖

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

我们可以在ArcGIS之外调用arcpy站点包运行python独立脚本,从而批量化任务提高工作效率。 如果可以把做好的脚本打包成exe是不是就更方便了呢?想想一键式处理也挺开心的。

Python打包的问题最早是在 ArcGIS知乎 中看到的,有人提问为何打包失败,我还有幸被邀请回答,虽然在这一块我也是小白一枚。 后来,得空时也搜了下相关的资源,虽然大部分人持悲观态度说arcpy不支持打包,但刚好有个帖子说可以实现,并且宣称 “It can be done easily!”,那我就动手试试吧。

Step1 下载安装Py2exe

Py2exe是一个Python工具发布扩展包,可以用来将Python脚本转化为Windows的可执行程序,详情看 官网 py2exe.org 。

下载Py2exe安装程序,下载地址戳 这里 。

ArcGIS Desktop使用的Python 2.7.x版本,可以对应下载安装 py2exe-0.6.9.win32-py2.7.exe 这个32位的版本;如果你的机器上安装 ArcGIS Desktop 64-bit Background Geoprocessing 补丁或者安装了 ArcGIS Server产品,也可以下载安装 py2exe-0.6.9.win64-py2.7.amd64.exe。 在这篇博客中,我就以 64位的包为例来说明打包的过程。

Step2 编写脚本文件准备打包

打包时需要有至少两个脚本文件,一个是 setup_py2exe.py, 一个是执行实际任务的 HelloPy2exe.py 脚本文件。

先 看第一个脚本 setup_py2exe.py,包含如下两行:

为了打包时包含arcpy的资源,不要忘记如下options。

options = {
  
  "py2exe": {
  
  "excludes": ["arcpy"]}}  
setup(console=['HelloPy2exe.py'], options=options) 

再 来看第二个脚本 HelloPy2exe.py:

path.dirname(interpreter) 可以得到Python解释器(python.exe)的路径,并向 sys.path 添加site-packages目录。

from site import addsitedir  
from sys import executable  
from os import path  
interpreter = executable  
sitepkg = path.dirname(interpreter) + "\\site-packages" 
print(sitepkg) 
addsitedir(sitepkg)

def main():
    # 这里编写实际需要执行的任务 

if __name__ == "__main__":
    print('Start Processing ...')
    main()
    raw_input("Enter enter key to exit...")

Step3 执行打包

为了简化打包过程,可以事先做个bat文件,放在与上述连个py文件相同的目录:

python setup_py2exe.py.py py2exe
pause

如果提示python不是有效的应用程序,那么python可以使用python.exe的绝对路径(如:C:\Python27\ArcGISx6410.4\python.exe),或者在 windows的环境变量path中添加python.exe所在的路径。

OK, 执行bat文件打包吧。

pypy 打包_手机按键精灵脚本编写

Step4 添加PTH文件

为了使得exe程序可以使用arcpy的资源,需要在发布后的dist目录中增加 site-packages 文件夹,并增加 *.pth 文件,...\dist\site-packages\Desktop10.4_64bit.pth。

以64位为例,文件中需要包含如下路径(我的ArcGIS Desktop是默认路径安装的,你要看好自己路径哦):

C:\Program Files (x86)\ArcGIS\Desktop10.4\bin64
C:\Program Files (x86)\ArcGIS\Desktop10.4\ArcPy
C:\Program Files (x86)\ArcGIS\Desktop10.4\ArcToolBox\Scripts
C:\Python27\ArcGISx6410.4\Lib
C:\Python27\ArcGISx6410.4\Lib\site-packages

PS: 开头提到的帖子中,没有提到要增加 C:\Python27\ArcGISx6410.4\Lib 和 C:\Python27\ArcGISx6410.4\Lib\site-packages 这两个路径,我在执行exe时屡屡失败,不得其解。 快要放弃的时候,经过和同事讨论和测试,发现加上这两个路径,找不到 Numpy、Numbers等等包的错误就解决了,开心!

最后,执行exe即可,这个示例中仅对两个数据进行投影变换,后面可以做些更复杂的工作。

pypy 打包_手机按键精灵脚本编写

后续思考

arcpy并不是一个免费的站点包,arcpy作为ArcGIS产品的一部分,完全脱离ArcGIS产品是不行的! Import arcpy内部其实会默默地检测产品许可的。 如果你没有产品许可,可能会遇到 “RuntimeError:NotInitialized” 这样的初始化失败的错误。

就现在的测试结果而言,我打包好的exe,放到其他安装有ArcGIS Desktop(64位python需要安装ArcGIS Desktop 64-bit Background Geoprocessing 补丁),ArcGIS Server的机器上都是可以正常运行的。

后面我会再做一些更复杂的测试,有时间的话再放上来。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/195319.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm2021最新激活码(最新序列号破解)

    pycharm2021最新激活码(最新序列号破解),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
  • 这是特殊的一天

    人生中特殊的日子可能并不多,真心不多!日子的过的很快,转眼三年已经过去。那年的今天,我从一个学生迈向社会! 那年的今天,是我入职的第一天! 也就是在那年的今天,我遇到了我爱的人!曾经梦想的毕业后如何如何,在现实面前,一切都是残酷的。三年很快,十年也很快,我对自己的十年之约,已经是快到了!2020这是我对自己的十年之约,而现在看来这个十年之约远比我想象的还要远。这…

    2022年2月27日
  • js数组删除元素_js清空数组的方法

    js数组删除元素_js清空数组的方法js的数组删除,我建议大家使用splice函数,不要使用slice函数,因为slice是返回一个新数组,并不是从原来的数组中删除。比如:leta=[111,222,333,444];a.splice(2,1);上面的代码运行后,a数组的值变成:[111,222,444]假如用slice实现:leta=[111,222,333,444];letb=a.slice(2,1);这时a的值不会改变,而b的值变成了[111,222,444]所以splice是比slice用起来简单的

    2022年10月1日
  • dz论坛ucenter打不开mysql_Discuz论坛搬家 ucenter info:can not connect to MySQL server解决办法…「建议收藏」

    dz论坛ucenter打不开mysql_Discuz论坛搬家 ucenter info:can not connect to MySQL server解决办法…「建议收藏」问题描述UCenterinfo:CannotconnecttoMySQLserverError:Accessdeniedforuser‘a*********’@’localhost’(usingpassword:YES)解决方法修改/web/uc_server/data/config.inc.PHP文件里的数据库用户名密码,更新为新数据库的用户名及密码。ftp重新上传一…

    2022年7月25日
  • spring整合log4j_spring整合log4j

    spring整合log4j_spring整合log4j常用日志框架log4j、log4j2(log4j的升级版,最常用的)、logback(spring boot默认)、Jboss-logging…等slf4 是日志接口规范,代码对接slf4,实现和具体日志框架解耦,无需修改编码即可切换日志框架。修改pom依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-st

    2022年8月9日
  • python缩进格式错误的是_python 缩进错误,

    展开全部要求严2113格的代码缩进是python语法的一大特色,就像C语言5261家族(C、C++、Java、C#等等)中的花括4102号一1653样重要,在大多数场合还有必要。在很多代码规范里面也都有要求代码书写按照一定的规则进行换行和代码缩进,但是这些要求只是纯粹是方便人(程序员)来阅读、使用或修改的,对于编译器或者解释器而言,完全是视而不见的。但是对Python解释器而言,每行代码前的缩进都…

    2022年4月12日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号