经测试,发现只能import py文件,而且这个py文件里import其他模块必须在搜索路径中,不然返回空指针.
如何才能导入pyd格式的模块呢? pycharm里可以直接用,而且优先用pyd格式文件
在aardio里,需要加入库路径。可以看看aardio的范例。
Code AardioLine:63复制 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60.61.62.63.//导入模块 import console;import py3; var pyCode = /**import urllib.requestdef getHtml(url): b = urllib.request.urlopen(url).read() return b.decode("utf-8")**///Python 模块请放在工程目录的 /py 目录下,string.save("/py/myHttp.py",pyCode );//创建一个自定义模块文件/*默认在以下两个目录搜索 Python 模块:这两个目录都会在生成 EXE 时复制到发布目录(即使 "\py" 目录没有添加到工程中) "\py" "~\lib\py3\.res\DLLs" "\py" : 文件路径开始为单个斜杠(或反斜杠)表示应用程序根目录, 应用程序根目录在开发时指工程根目录(工程外单独启动代码则为文件所在目录), 发布后应用程序根目录就是指 EXE 所在的目录。"~\lib\py3\.res\DLLs" : aardio 规定文件路径开始为波浪线表示 EXE 所在的目录(开发时为 aardio.exe 所在目录)。 可以自己添加模块搜索路径,例如: py3.appendPath("\py\site-packages\");*/ //试试在 Python 中 import 上面保存的测试模块(当然也可以在 Python 代码中 import)var myHttp = py3.import("myHttp");var str = myHttp.getHtml("http://www.aardio.com" );import console;console.log( str.toString() );console.pause()/*aardio 与 Python 的 import 语句基本用法类似,都是用来导入模块,都要求文件名与模块路径与文件路径保持一致。但 aardio 的 import 语句更简单,Python 的 import 语句则有很多复杂的功能,例如: from 模块名 import 函数名 from 模块名 import * from hashlib import md5 as md5New 等等用法,并且可以任意添加修改搜索模块的路径。aardio 需要在 import 过来的库中用 namespace 定义名字空间,而 Python 并不需要这么做,Python 文件放到哪里模块名字就变成什么,所以经常会在 Python 代码中看到这句代码 if __name__ == "__main__":如果一个库被直接执行 __name__ 的值就是 "__main__",否则就是当前导入的模块名字或者当前类的名字。当然,复杂是有代价的,Python 的模块不但安装、部署比较麻烦,容易出现模块间的依赖与版本冲突,在生成软件时也不容易做到按需引用、按需发布,但在 aardio 中我们可以用类似 py3.lib.numpy 这样的扩展库解决这一麻烦。*/
//导入模块
import
var
/**
import urllib.request
def getHtml(url):
b = urllib.request.urlopen(url).read()
return b.decode("utf-8")
**/
//Python 模块请放在工程目录的 /py 目录下,
string
"/py/myHttp.py"
//创建一个自定义模块文件
/*
默认在以下两个目录搜索 Python 模块:
这两个目录都会在生成 EXE 时复制到发布目录(即使 "\py" 目录没有添加到工程中)
"\py"
"~\lib\py3\.res\DLLs"
"\py" :
文件路径开始为单个斜杠(或反斜杠)表示应用程序根目录,
应用程序根目录在开发时指工程根目录(工程外单独启动代码则为文件所在目录),
发布后应用程序根目录就是指 EXE 所在的目录。
"~\lib\py3\.res\DLLs" :
aardio 规定文件路径开始为波浪线表示 EXE 所在的目录(开发时为 aardio.exe 所在目录)。
可以自己添加模块搜索路径,例如:
py3.appendPath("\py\site-packages\");
*/
//试试在 Python 中 import 上面保存的测试模块(当然也可以在 Python 代码中 import)
"myHttp"
"http://www.aardio.com"
toString
aardio 与 Python 的 import 语句基本用法类似,
都是用来导入模块,都要求文件名与模块路径与文件路径保持一致。
但 aardio 的 import 语句更简单,
Python 的 import 语句则有很多复杂的功能,例如:
from 模块名 import 函数名
from 模块名 import *
from hashlib import md5 as md5New
等等用法,并且可以任意添加修改搜索模块的路径。
aardio 需要在 import 过来的库中用 namespace 定义名字空间,而 Python 并不需要这么做,
Python 文件放到哪里模块名字就变成什么,所以经常会在 Python 代码中看到这句代码 if __name__ == "__main__":
如果一个库被直接执行 __name__ 的值就是 "__main__",否则就是当前导入的模块名字或者当前类的名字。
当然,复杂是有代价的,Python 的模块不但安装、部署比较麻烦,容易出现模块间的依赖与版本冲突,
在生成软件时也不容易做到按需引用、按需发布,但在 aardio 中我们可以用类似 py3.lib.numpy 这样的扩展库解决这一麻烦。
搞清楚原因了,pyd是64位文件,aardio的是32位的,用了64位python可以用. 但是process.python示例太少,像py3那样不知道怎么实现,狠多方法都不一样