平台:Windows 7 假设两者都是32位版本。
我目前的理解是,这是不可能的,因为两个安装过程都涉及替换python.exe本身。
我想每个人的来源都必须合并才能从两者中获取功能?
Stackless Python: http://zope.stackless.com/
Python for .NET: http://pythonnet.github.io/
我们在IronPython上使用Python for .NET,因为我们想要访问所有cpython库(例如matplotlib等)。
答案 0 :(得分:2)
正如你所说 - 不,这是不可能的:“合并两个项目的来源”也是一项非常重要的任务。
然而,sicne你有一个很好的无问题处理的问题,我建议编写项目的一部分,需要无需堆栈的Python写入其中,以及项目的另一部分,需要.net使用常规IronPython - 您可以使用xmlrpc(或jsonrpc)调用在程序的两个部分之间进行通信 - 在Python中执行它并不复杂,并且可以在两种Python风格中使用(例如:{{ 3}})
答案 1 :(得分:1)
事实证明pythondotnet有一个选项,你不必替换exe。这里的“入门”部分简要提到了这一点: http://pythonnet.github.io/readme
这允许您然后安装stackless(修改exe)并仍然获得pythondotnet功能。
clr.pyd和Python.Runtime.dll文件最终被复制到Python27 / DLLs目录中,而不是将这些文件和修改过的python.exe复制到根python安装目录中。
这一切都是用x86完成的,顺便说一句... x64支持适用于pythondotnet但是无法使无堆栈x64支持工作...从源代码构建后运行x64解释器但是像numpy这样的库出现了问题。
答案 2 :(得分:1)
对于寻求官方答复的人来说,这是“不”。 PythonDotNet遍历Python的Object的内部工作。
/// <summary>
/// TypeFlags(): The actual bit values for the Type Flags stored
/// in a class.
/// Note that the two values reserved for stackless have been put
/// to good use as PythonNet specific flags (Managed and Subclass)
/// </summary>
internal class TypeFlags {
public static int HaveGetCharBuffer = (1 << 0);
public static int HaveSequenceIn = (1 << 1);
public static int GC = 0;
public static int HaveInPlaceOps = (1 << 3);
public static int CheckTypes = (1 << 4);
public static int HaveRichCompare = (1 << 5);
public static int HaveWeakRefs = (1 << 6);
public static int HaveIter = (1 << 7);
public static int HaveClass = (1 << 8);
public static int HeapType = (1 << 9);
public static int BaseType = (1 << 10);
public static int Ready = (1 << 12);
public static int Readying = (1 << 13);
public static int HaveGC = (1 << 14);
// 15 and 16 are reserved for stackless <- quote from the python source
public static int HaveStacklessExtension = 0;
/* XXX Reusing reserved constants */
public static int Managed = (1 << 15); // PythonNet specific
public static int Subclass = (1 << 16); // PythonNet specific