ffggddss 发表于 2020-5-23 19:16

Python导入模块问题 目录是文件 如何做到的?

本帖最后由 ffggddss 于 2020-5-31 11:38 编辑



问题已解决,这个python2.7 的dll是游戏公司自己修改后编译的,不是原生的dll,所以导入模块问题 其实都是他自己导入的,跟踪PyImport_ImportModule 分析导入过程,解决问题。


----------------------------------------------------------------------------------------------------一款游戏 ,用的是c++ 调用 Python2.7
他导入模块的时候 是从一个 data.fls 文件里导入   




把自己写的dll注入进游戏查看了下sys.path   
               
PyRun_SimpleString("a=sys.path");
PyRun_SimpleString("for i in a : print i");      

输出了下目录 发现全是这个文件下的目录。。。。 这种是怎么个意思如何办到这种效果。
怕违规 游戏名称就隐藏 用*** 代替了


E:/*******/exe/../data/data.fls
E:/*******/exe/../data/data.fls/abtest
E:/*******/exe/../data/data.fls/advertise
E:/*******/exe/../data/data.fls/activity
E:/*******/exe/../data/data.fls/activity/adboard
E:/*******/exe/../data/data.fls/activity/annualwish2018
E:/*******/exe/../data/data.fls/activity/assassin
E:/*******/exe/../data/data.fls/activity/carnival2019
E:/*******/exe/../data/data.fls/activity/concert
E:/*******/exe/../data/data.fls/activity/dispelwar
E:/*******/exe/../data/data.fls/activity/dlgskin
E:/*******/exe/../data/data.fls/activity/doubleactivity
E:/*******/exe/../data/data.fls/activity/dragonboat
E:/*******/exe/../data/data.fls/activity/elevenactivity




xxoopp 发表于 2020-5-23 19:59

参数是0的话,再加上setpath, 我觉得是为了让python在搜索路径的时候,选择第一个搜索到的时候使用,这个有点像django里面在setting里面使用的sys.path.insert(0,xxxxxxxxxxxxxxxxxxxxxxxx)。
然后你这句话,‘这种是怎么实现的’,我不知道你的意思是什么,你的意思是python里面导入不是python的东西吗?如果是这个问题的话,那这个python里面是可以导入其他语言的,如C什么的,当中模块导入,比较典型的一个就是python里面导入c语言写的,然后就可以真正多线程执行

ffggddss 发表于 2020-5-23 20:03

xxoopp 发表于 2020-5-23 19:59
参数是0的话,再加上setpath, 我觉得是为了让python在搜索路径的时候,选择第一个搜索到的时候使用,这个 ...

抱歉 可能没描述清楚他设置的目录是一个文件data.fls 这段代码被nop掉后 就无法导入后续的init模块了我自己c 里测试里下 却无法导入 init模块。。。

xxoopp 发表于 2020-5-23 20:29

ffggddss 发表于 2020-5-23 20:03
抱歉 可能没描述清楚他设置的目录是一个文件data.fls 这段代码被nop掉后 就无法导入后续的init模块了   ...

{:1_907:} 额 不太熟悉C,你这个应该是c里面调用python吧,我个人感觉应该是可以的,你可以拿相关代码在谷歌上搜索下

凡凡之呗 发表于 2020-5-23 21:47

这个是自己定义的函数功能吧。之前见过易语言和python的混编。利用的是模块里的函数,模块未开源。1我也不知道原理。应该有自己的一套映射,然后生成.py文件后台执行什么的。

ffggddss 发表于 2020-5-23 23:22

xxoopp 发表于 2020-5-23 20:29
额 不太熟悉C,你这个应该是c里面调用python吧,我个人感觉应该是可以的,你可以拿相关代码在 ...

我是从反汇编看的,动态模块调用的,跟到这里,函数大概功能就是这样了,合并字符串出来文件目录, 然后把那个文件设置成搜索目录,就开始导入模块了,如果没有设置这个文件做搜索目录,就导入不了后续模块,我从c里试了 确不能导入到任何模块。

ffggddss 发表于 2020-5-23 23:24

凡凡之呗 发表于 2020-5-23 21:47
这个是自己定义的函数功能吧。之前见过易语言和python的混编。利用的是模块里的函数,模块未开源。1我也不 ...

在哪里看到的,名称啊,论坛名,模块名啊,给点提示,我找找看,这种我只知道windows有一种文件映射,可以把一个文件夹映射到另一个文件功能,这种难道也是从别的地方映射过来的?

wanwfy 发表于 2020-5-24 00:56

我查了一下这个是c++调用python的方法

凡凡之呗 发表于 2020-5-25 19:14

ffggddss 发表于 2020-5-23 23:24
在哪里看到的,名称啊,论坛名,模块名啊,给点提示,我找找看,这种我只知道windows有一种文件映射,可 ...

百度搜索易语言 python混编

ffggddss 发表于 2020-5-27 17:07

xxoopp 发表于 2020-5-23 20:29
额 不太熟悉C,你这个应该是c里面调用python吧,我个人感觉应该是可以的,你可以拿相关代码在 ...

我修改了下帖子内容 这次问题描述 应该很清晰了。。 求看下 。。
页: [1] 2
查看完整版本: Python导入模块问题 目录是文件 如何做到的?