Я знаю 3 способа:
1) Используйте Iron Python, и ваши проекты Python могут свободно взаимодействовать с проектами, написанными на C #.
2) Предоставьте ваши функции Python для COM. Это можно сделать, если вам нужно использовать библиотеки Python, которые вы не хотите или не можете конвертировать в Iron Python (например, если у вас просто есть DLL).
«COM беспорядок» не так уж и плох, если ваш код Python и код C # работают на одной машине.
Этот код из этого урока показывает, что он не слишком уродлив:
class PythonUtilities:
_public_methods_ = [ 'SplitString' ]
_reg_progid_ = "PythonDemos.Utilities"
# NEVER copy the following ID
# Use "print pythoncom.CreateGuid()" to make a new one.
_reg_clsid_ = "{41E24E95-D45A-11D2-852C-204C4F4F5020}"
def SplitString(self, val, item=None):
import string
if item != None: item = str(item)
return string.split(str(val), item)
# Add code so that when this script is run by
# Python.exe, it self-registers.
if __name__=='__main__':
print "Registering COM server..."
import win32com.server.register
win32com.server.register.UseCommandLine(PythonUtilities)
3) Пусть C # и Python общаются через сокеты. Это можно сделать, если у вас есть код, который вы не можете преобразовать в Iron Python, и вам нужен удаленный доступ к нему.
Это требует большей работы, потому что вам нужно маршалировать и демаршировать аргументы и возвращать значения из байтов или строк, но это то, что сделала одна моя команда, когда нам нужно было заставить C # общаться с удаленным процессом Python.