-
Notifications
You must be signed in to change notification settings - Fork 84
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[TWB] pdm 模式 #73
Comments
Hi,开发者朋友,鉴于您是首次在QPT下新增Issue,请务必参考给定的Issue模板进行Issue的新增。 |
加入Todo ,等有空就学习一下哈哈哈 |
如果能给我一些 tips (qpt 是如何进行依赖扫描的;如果我要改变扫描逻辑应该修改哪个文件),我可以帮助完成这个功能 |
这部分代码写的有点乱,各种写死打补丁哈哈哈(想重构也是可以的,最近实在有点忙) 依赖检索1.用户代码依赖检索由于要判断哪些依赖需要被打包,所以要对用户代码进行检索,检索import的情况,根据import情况来判断用户可能用到了哪些依赖(绝大部分是可以这样检索得到)。 该部分代码位于:https://github.com/QPT-Family/QPT/blob/%E5%BC%80%E5%8F%91%E5%88%86%E6%94%AF/qpt/kernel/qcode.py 2.用户环境依赖检索由于使用pip、setuptools安装的依赖包,默认会在site_packages目录中给一个 同样, 该部分代码位于: Line 1 in 2672328
当前已知的Bug(Anaconda中部分包丢失Top_level.txt信息):#65 3.依赖匹配在做完两部分检索后,就要进行依赖的匹配,生成一个requirement文件,包含主依赖+对应版本号+被注释掉的主依赖的依赖(pip会默认忽略,所以这里也默认注释了) 依赖封装解析requirement因为客户机不一定会安装VS2019这样的开发环境,所以例如lap这样原作者没有提供whl包的依赖,可能需要用户具备编译环境。未来更好让用户去控制依赖如何被封装,这里的requirement文件就多了一些特殊标识符(QPT目前还没弄太好) :
例如我们想避免在客户机上编译安装lap,那么requirement里就可以写为: 代码解析部分: QPT/qpt/kernel/qinterpreter.py Line 286 in 2672328
获取文件列表: Line 158 in 2672328
封装为SubModule这部分是最烂的地方,太想重构了( 封装用于Requirement文件安装的SubModule例子:https://github.com/QPT-Family/QPT/blob/26723288a15efbc4627e7cfcff6443ec5460418b/qpt/modules/auto_requirements.py 实际上就是对 Line 174 in 2672328
Tips: 然后封装在SubModule:https://github.com/QPT-Family/QPT/blob/%E5%BC%80%E5%8F%91%E5%88%86%E6%94%AF/qpt/modules/package.py#L201 SubModule最开始设计时觉得能灵活解决很多问题了,但现在发现只有增加,并没有删除这个操作,可能后续还会再改进一下,基类源码部分在:https://github.com/QPT-Family/QPT/blob/%E5%BC%80%E5%8F%91%E5%88%86%E6%94%AF/qpt/modules/base.py (请勿在SubModule中使用module_path等成员变量,因为这些变量只是占位,只有SubModuleOpt部分才会真实有效,这部分文档有空一定更新[狗头]) |
已经发布啦~感谢贡献 |
Issue类型
建议 or 代码贡献请求
我的想法
pdm 是一个 python 包管理器,使项目拥有独立的依赖环境,并有非常清晰的依赖描述,例如:
一个 pdm 项目示例: https://github.com/SOVLOOKUP/uie-api
期待的回应
希望 qpt 能自动识别 pdm 项目,读取依赖及 python 环境等配置进行打包
The text was updated successfully, but these errors were encountered: