avatar
Python的script的兼容问题# Programming - 葵花宝典
s*h
1
我有2个script文件:
psse_dyn.py,里面定一个function psse_dyn()
psse_chop.py,里面定一个function psse_chop()
我在另外一个Python script里调用任何一个都可以运行.
调用:
import psse_chop
psse_chop.psse_chop()
或者:
import psse_dyn
ierr=psse_dyn.psse_dyn()
二个都没问题.
可是如果同时做:
import psse_dyn
ierr=psse_dyn.psse_dyn()
import psse_chop
psse_chop.psse_chop()
运行到psse_chop.psse_chop()就出错。
据说psse_dyn和psse_chop里的函数不是我写的。
好像psse_dyn是用Visual Studio VC++8做的;而psse_chop涉及到numpy,与Visual
Studio VC++8不兼容。
遇到这种问题,有解决办法没有?
谢谢!
avatar
a*a
2
先搞清楚出错的根源吧。不知道错误的根源,谁也帮不了你。

【在 s****h 的大作中提到】
: 我有2个script文件:
: psse_dyn.py,里面定一个function psse_dyn()
: psse_chop.py,里面定一个function psse_chop()
: 我在另外一个Python script里调用任何一个都可以运行.
: 调用:
: import psse_chop
: psse_chop.psse_chop()
: 或者:
: import psse_dyn
: ierr=psse_dyn.psse_dyn()

avatar
s*h
3
谢谢回复。
这2个script里都用到一个商业软件提供的module,但module不同,一个是module_A,
另一个是module_B。
根据商业软件公司技术支持的说明:
module_A is compiled with Visual Studio VC++8;The numpy program
which module_B uses is not compiled with Visual Studio VC++8. That's why
they cannot work from the same Python script.
他们还建议我:
I guess you could call these two separate python scripts from third Python
script. That might work. I have not tried that.
现在我试着把module_A和module_B放到2个script去,再用第三个script调用,就会提
示出错:“Pythonw.exe encounters a problem”
我觉得很奇
avatar
a*a
4
我前不久自己编译了一次numpy, 恰好知道这个。Python2.5是用VC7.1(2003)编译的,
它的runtime用的是MSVCR71.DLL。如果真如商业手册所言,可能是runtime冲突所致。
所以您只好在分别的进程里使用, 而不是在同一个script里使用。

【在 s****h 的大作中提到】
: 谢谢回复。
: 这2个script里都用到一个商业软件提供的module,但module不同,一个是module_A,
: 另一个是module_B。
: 根据商业软件公司技术支持的说明:
: module_A is compiled with Visual Studio VC++8;The numpy program
: which module_B uses is not compiled with Visual Studio VC++8. That's why
: they cannot work from the same Python script.
: 他们还建议我:
: I guess you could call these two separate python scripts from third Python
: script. That might work. I have not tried that.

avatar
s*h
5
谢谢你的说明。
你能详细讲讲吗?
可以在Python里实现多进程?二个进程里分别调用不同的module.
不过在我的算法里,这2个module有逻辑上的依存关系,需要多次运行:B module需要A
module的计算结果,A module的计算输入又依赖于B module的计算结果。
A -> B ->A ->B........->A ->B
avatar
a*a
6
用进程间通讯模块。可以设计成父子进程,通过管道或者socket套接字通讯。Python
有现成的module可用。还可以通过内存映像文件mmap来通讯。

A

【在 s****h 的大作中提到】
: 谢谢你的说明。
: 你能详细讲讲吗?
: 可以在Python里实现多进程?二个进程里分别调用不同的module.
: 不过在我的算法里,这2个module有逻辑上的依存关系,需要多次运行:B module需要A
: module的计算结果,A module的计算输入又依赖于B module的计算结果。
: A -> B ->A ->B........->A ->B

avatar
s*h
7
arya,你说你自己编译了一次numpy.
请问可以得到source file of nympy?
有个技术支持的人告诉我:
他们的软件是用VC++8编译的,所以跟nympy不兼容.
如果我能用VC++8编译一下numpy,就可以了.
他说:
our program is compiled with Visual Studio VC++8. The numpy program
is not compiled with Visual Studio VC++8. That's why
they cannot work from the same Python script.
If you have access to numpy source and know how to build it, you can
build that using Visual Studio VC++ 8 compiler. That will be compatible
with our program.
avatar
s*h
8
我现在需要在我的Python程序里调用一个第三方的程序.
他们的程序是用VC++8编译的,跟numpy不兼容.
而我需要做一些科学计算,如果不用numpy,就会非常麻烦.
avatar
a*a
9
numpy是自由软件,可以免费得到源码。不过我不太明白为什么VC++8编译出来的
不兼容numpy. numpy为了兼容Python, 强调使用和Python一致的编译器,就是
VC7.1(2003). 但是你的商业程序能在Python中单独调用,说明两者没有冲突。
所以问题可能出在别的地方...

【在 s****h 的大作中提到】
: arya,你说你自己编译了一次numpy.
: 请问可以得到source file of nympy?
: 有个技术支持的人告诉我:
: 他们的软件是用VC++8编译的,所以跟nympy不兼容.
: 如果我能用VC++8编译一下numpy,就可以了.
: 他说:
: our program is compiled with Visual Studio VC++8. The numpy program
: is not compiled with Visual Studio VC++8. That's why
: they cannot work from the same Python script.
: If you have access to numpy source and know how to build it, you can

avatar
s*h
10
谢谢。
据技术支持说:这个商业程序用VC++8编译的;他没说Numpy是用什么编译的,但很肯定
地说二者不兼容,所以二者可以分别在Python里调用,却不能同时调用。
这么说我可以得到Numpy的源码,用VC++8编译一下,就能使用?
请问哪里可以下载源码?
我在这个地方,只发现安装文件:
http://claymore.engineer.gvsu.edu/~steriana/Python/

【在 a**a 的大作中提到】
: numpy是自由软件,可以免费得到源码。不过我不太明白为什么VC++8编译出来的
: 不兼容numpy. numpy为了兼容Python, 强调使用和Python一致的编译器,就是
: VC7.1(2003). 但是你的商业程序能在Python中单独调用,说明两者没有冲突。
: 所以问题可能出在别的地方...

avatar
r*t
13
这建议真是白痴啊,连我都知道他们说瞎话,照他们说的根本不可能work。

【在 s****h 的大作中提到】
: 谢谢回复。
: 这2个script里都用到一个商业软件提供的module,但module不同,一个是module_A,
: 另一个是module_B。
: 根据商业软件公司技术支持的说明:
: module_A is compiled with Visual Studio VC++8;The numpy program
: which module_B uses is not compiled with Visual Studio VC++8. That's why
: they cannot work from the same Python script.
: 他们还建议我:
: I guess you could call these two separate python scripts from third Python
: script. That might work. I have not tried that.

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。