一、关于Python AI 编程助手Fitten Code的应用体验
AI现在无孔不入,现在都开始进入到编程中了,有一个能适用多种编译器环境的AI编程插件 Fitten Code。其适配了 Viusal Studio,VS Code(本文使用),JetBrains 系列(本文使用)以及Vim等多种编译器环境的插件 Fitten Code,Fitten Code 是由非十大模型驱动的 AI 编程助手,它可以自动生成代码,提升开发效率,帮您调试 Bug,节省您的时间,另外还可以对话聊天,解决您编程碰到的问题,Fitten Code 免费且支持 80 多种语言:Python、C++、Javascript、Typescript、Java等。目前对于 Python 语言,Fitten Code 支持在多种文本编辑器或 IDE 上使用。这就是我最近正在PyCharm IDE上体验的AI编程插件。
安装和使用见网址:https://www.runoob.com/python3/fitten-code.html 有非常详细的安装使用教程。
1、安装
点击左上方"文件"再点击"设置",接着点击左侧"插件"选择"Marketplace",并搜索"Fitten Code",然后点击"安装"进行安装,安装完成后左侧会出现Fitten Code插件图标,注册登录后即可开始使用
2、智能补全
打开代码文件,输入一段代码,Fitten Code 就会为您自动补全代码:按下 Tab 键接受所有补全建议:按下 Ctrl+→ 键接收单个词补全建议:
3、生成代码
可在左侧 Fitten Code 工具栏中选择 "Fitten Code - 生成代码" ,然后在输入框中输入指令即可生成代码:利用注释后的自动补全功能生成代码,也可以利用对话功能生成代码
实际也根本不用什么教程,安装好之后,你在编辑代码时它会在你鼠标停顿的时候自动补全代码,生成代码。
二、Python 修改删除 sys.path 路径以实现多项目代码合并
之前的一些老项目因为一些规划未到位,导致项目的主程序和后台任务程序分离开的。但都是大致相同的目录框架,也因此导致需要维护两套代码的git系统、代码发布系统、线上docker容器,觉得非常没有必要。
在之后的项目中,已将两套程序进行深度合并,只是在入口程序 main.py 上做了修改并形成独立入口程序文件,而原来的老程序代码也没办法一下子就将代码合并,于是试了试预想中的办法并且成功实现。
在主程序中建立一个类似 task 的目录文件夹,将后台代码程序全部放在此文件夹中。在运行时会出现一个问题,后台任务的运行如下:
docker exec 容器ID python /app/task/main.py 任务ID
但是在后台任务运行时会出现 main.py 中的import模块会首先去加载 /app/目录下的模块,而不是 /app/task/ 下的模块。开始我尝试着使用 os.chdir()来改变当前的工作目录。chdir()函数是OS模块的函数,用于改变当前工作目录。
import os
# 改变到指定的目录
os.chdir('/path/to/directory')
# 获取当前工作目录
current_dir = os.getcwd()
print(current_dir)
# 加载模块
from conf.config import Config
但在执行 import 的时候发现仍然是去加载 /app/conf/config 模块,这就没有达到我的目的了。那什么是sys.path?在Python中,sys.path是一个包含了Python解释器在导入模块时搜索路径的列表。当我们在程序中导入模块时,Python会按照sys.path列表中的顺序来搜索需要导入的模块。sys.path列表的第一个元素是空字符串,表示当前目录。其余的元素是Python解释器搜索模块的路径。
不过打印原始的sys.path列表,发现其存在 /app/ 路径也存在 /app/task路径,很有可能是优先加载了 /app/路径,打印出来的时候是 /app/task路径 在前,这样来看有可能/app/路径在搜索的时候会优先加载。我曾想过将两个目录的顺序调换,但没有去尝试。因为我想应该可以通过修改 sys.path 来达到效果。
在运行一些特殊需要的作业比如我这样的后台任务时,可以使用 sys 模块去掉一些路径,通过操作sys.path列表来实现。示例如下:
import sys
# 打印原始sys.path列表
print(sys.path)
# 去掉路径
delete_path = "/path/to/directory"
# 判断路径是否在sys.path中
if delete_path in sys.path:# 从sys.path中移除路径sys.path.remove(delete_path)
# 打印sys.path列表
print(sys.path)
sys.path是在Python解释器启动时根据配置文件和环境变量生成的,它包含了默认的模块搜索路径。在运行时修改sys.path列表,其修改范围仅限于当前Python解释器的运行时环境,并不是永久修改,而这正是我要的修改范围,因为其它的程序还在运行着API服务,不能变更其sys.path