天津市建设 中标公示网站广州产品网站设计
2026/4/16 23:01:57 网站建设 项目流程
天津市建设 中标公示网站,广州产品网站设计,物理结构网站,python用于网站开发最近在使用Jep#xff08;Java Embedded Python#xff09;做一个Java调用Python代码的案例#xff08;一种在网页上编写并支持代码即时运行#xff09;时发现一个问题。由于每个人都在页面上编写属于自己的python脚本#xff0c;而这些python脚本可能会使用一些诸如计算时…最近在使用JepJava Embedded Python做一个Java调用Python代码的案例一种在网页上编写并支持代码即时运行时发现一个问题。由于每个人都在页面上编写属于自己的python脚本而这些python脚本可能会使用一些诸如计算时间差、日期格式转换等代码而这些代码都是由脚本人员写在同一个脚本下的如果A有两个脚本需要计算时间差那么他就需要在两个脚本中写两个计算时间差的脚本当然他可以选择复制于是当某天运维人员检查脚本时发现了大量的冗余代码片段有的是功能相同的代码实现不同的有的甚至是代码存在缺陷只是刚好在这个脚本下不会触发同时脚本人员也有抱怨同样的功能片段不能复用而需要他们来回复制。因此寻找统一的工具集就成了比较紧急的事情。Jep介绍在Java中我们时常使用一些非常实用的类库如guava、common-langs3等而在python这边似乎是科学计算的类库用的比较多如:numpy、panda等找了半天也就pyhutool比较接近我的需求但是pyhutool还是太杂了里面还是有一堆脚本小子们用不到的东西因此还是决定自己做一个。在Java中自定义工具集是通过编写代码并打成jar的方式或发布到中央仓库进行分发的而在Python里也有一个Pypi的仓库可以使用当然我们不讲如何使用pypi我们主要讲的是如何将我们写的python代码打成 jar 注意引号来安装到本地从而可以进行使用。同样的在制作python的工具集时首先需要创建一个新项目整体结构如下sdk-demo ├─ setup.py └─ kanyun_tools ├─ __init__.py ├─ str │ ├─ str_utils.py │ └─ __init__.py └─ date ├─ date_utils.py └─ __init__.py可以看到 sdk-demo是我们整个项目的名称也就是上传到github上的名称。kanyun_tools则是python的包名称可以看到下面有__init__.py文件。str/date则是kanyun_tools的子包它表示了kanyun_tools下包含了两个子包。分别表示两种类型的工具:字符串和时间。这里有两个小提醒1.在python中包名最好不要使用中划线可以使用下划线这块在浪费了很长时间2.在python中一个py文件称为一个模块整个项目结构中的所有__init__.py内容均为空。重点关注项目路径下的setup.py文件from setuptools import setup, find_packages setup( # 这个名字应与主包的名字一致 namekanyun_tools, version1.0, author看云, descriptionLearn to Pack Python Module, # 项目主页 urlhttps://github.com/chenwuwen, # 你要安装的包通过 setuptools.find_packages 找到当前目录下有哪些包 packagesfind_packages(), # 表明当前模块依赖哪些包若环境中没有则会从pypi中下载安装 install_requires[], # 安装环境的限制,安装需要python环境大于等3.10 python_requires3.10 )以上文件只是简单的写了写更多内容见https://zhuanlan.zhihu.com/p/276461821https://geek-blogs.com/blog/python-setuppy/https://developer.aliyun.com/article/1604491讲完了setup.py的编写包的创建工作也就结束了接下来开始打包了。在打包之前你可能想先在本地试一下这个包是否好用那么可以cd到项目目录执行命令# 安装 Python 包的可编辑版本及其可选依赖项,通过符号链接安装源码修改直接生效这样如果包有问题,可以直接修改源码即时生效 pip install -e .执行完上述命令后就可以在本机的其他项目中引用你的包了引用的包名也就是setup.py中定义的名称。在引用前可以使用pip list命令查看在虚拟环境下包是否已被安装C:\Users\kanyunpip list Package Version --------------- ----------- e 1.4.5 jedi 0.19.2 json5 0.12.1 kanyun-tools 1.0 #注意这个名字 orjson 3.11.5 parso 0.8.5 pip 23.2.1 python-dateutil 2.9.0.post0 setuptools 65.5.0 simplejson 3.20.2 six 1.17.0 ujson 5.11.0 wheel 0.45.1可以看到已经找到了kanyun-tools这个依赖了需要注意的是这个包安装到虚拟环境中显示的是中划线而在python代码引入时使用的是下划线 kanyun_tools还有三个提醒1.安装包的虚拟环境与使用端的虚拟环境是否是同一个2.如果使用的是pycharm可能需要重启一下否则使用端可能引用不到当然最好使用python自带的命令行验证。3.如果在编辑安装的模式下修改了包的源码而在测试中发现修改后的源码没有生效则需要重启下测试方的shell再次验证。验证Python 3.11.6 (tags/v3.11.6:8b6ee5b, Oct 2 2023, 14:57:12) [MSC v.1935 64 bit (AMD64)] on win32 Type help, copyright, credits or license for more information. from kanyun_tools.date import date_utils date_utils.test() 112 from kanyun_tools.str import str_utils str_utils.test() 334 可以看到已经我们自定义的python包已经成功安装并运行成功。接下来我们真正要做的就是将我们测试验证好的包进行打包了也就是打我们的jar包了并分享给别人使用。# 将包打成源码包(源码包安装的过程是先解压再编译最后才安装所以它是跨平台的由于每次安装都要进行编译相对二进包安装方式来说安装速度较慢) python setup.py sdist打包完成后会在项目目录下生成dist目录目录下产生tar.gz文件当包要传递给其他平台时可以使用源码包进行安装。#安装源码包(需要保证包中所需的依赖在平台上存在) pip install *.tar.gz二进制打包方式# 二进制包的安装过程省去了编译的过程直接进行解压安装所以安装速度较源码包来说更快由于不同平台的编译出来的包无法通用所以在发布时需事先编译好多个平台的包 python .\setup.py bdist_wheel执行上述命令可以看到在dist目录下whl文件这也是常见的python依赖二进制文件需要注意的是在执行这个命令前需要打包环境存在wheel依赖如果没有则需要安装pip install wheel。#使用如下命令查看当前环境的python依赖 pip list将生成whl分发给别人其他人就可以使用这个包了。当然了如果这个包只会自己在本机使用也可以直接在包的项目目录执行如下命令即可#将包文件复制到Python环境修改源码需重新安装才能生效。 pip install .

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询