如果我用python创建一个包,那么另一个python用户可以导入该包并与之交互。
我如何创建一个包,这样其他用户用什么语言调用库就不重要了?
我可以指定输入和输出文件格式,这样其他语言就可以通过提供输入文件和读取输出文件来与我的Python代码进行交互。然而,创建输入和输出文件在计算上非常昂贵。有更简单的解决方案吗?

最佳答案

@bluprince13没有这样的方法可以让每个语言都可以调用库,至少不能直接在没有包装器代码的情况下调用库。Windows上的COM接口是关闭的,然后可以由大多数程序(如Excel、Matlab、Java)导入,但这是一个巨大的痛苦。
当你说读写是一个昂贵的操作时,你不应该使用熊猫read_csvto_csv函数——它们是闪闪发光的(C++)实现。虽然二进制HDF5文件对于大多数用户来说很难使用,但速度更快,因为许多语言都支持这种文件。使用输入和输出文件将使程序更易于移植。
使用Embedded python(已编译)您可以简单地使用您在其read_hdf表单中创建的任何python函数(本文末尾的“我的Dropbox”链接中的to_hdf以及其中的所有zip文件),这可能是您最好、最简单和最快的路径-有关sourcecode/用法的参考:这是使代码在任何系统上兼容的最简单方法,而且在Python脚本之间进行更改也很容易(当您调用不同的库时,整个包必须在子文件夹中可用)。在蟒蛇安装中,文件将位于各自的installed packages文件夹中,通常为.py;典型的蟒蛇安装位于embedpython.exe)。否则,从安装python的命令提示符C:\Anaconda3\Lib\site-packages\ [packageName] \中,将找到该位置。然后将每个包的整个安装目录放在“扩展模块”目录下。因此,它看起来像是C:\Python\Lib\site-packages\ [packageName] \cd\,以及您要导入的所有库(以及包所依赖的库)。
下面是一些如何用exe调用相应语言的例子:Java:dir /s site-packages Matlab:extension_modules\numpy\;VBA:extension_modules\pandas\ C++:http://pandas.pydata.org/pandas-docs/version/0.20/io.html .NETC*>:https://en.wikipedia.org/wiki/Hierarchical_Data_Format如你所见,列表继续下去…几乎任何语言都可以调用一个exe文件。当然,您希望获得最大的性能,但是为了在所有语言之间获得兼容性,您必须以某种方式进行妥协。但是使用上述建议,只要优化了Process process = new ProcessBuilder("C:\\PathToExe\\embedpython.exe","pyscript","pyfunction","input_param1","input_param2").start();函数,您的性能仍然应该很好。
让每个人的生活更轻松这里有编译版本x64 python 3.5 windows numpy scipy和pandas intel mkl包括:Embedded Python does not work pointing to Python35.zip with NumPy - how to fix?
如果您是Windows用户,请下载以上内容,并将您的system('"C:\PathToExe\embedpython.exe" pyscript pyfunction input_param1 input_param2')脚本和扩展模块\[包名称]中的相关库放在您要分发的位置,这样您的代码就可以轻松运行。您没有指定这是否要在Linux下使用,所以这是我的Windows解决方案,解决您的“从任何语言使用”问题,需要对其他编程语言的知识最少。

10-02 01:35
查看更多