Моя кодовая база находится преимущественно в .net framework.Я пытаюсь сделать одну из библиотек доступной в скрипте python через python.net.Я могу заставить его работать успешно,
- Скачивая исходный код python.net, а затем собирая npython.exe / python.runtime.dll из исходного кода
- Запустите pythonскрипт вроде этого
npython.exe MyPythonScript.py
Все работает как положено.
Однако, если я не использую мою версию npython, но использую pip, чтобы установить пакет pythonnet непосредственно в мой python anaconda, а затем попытаться запустить скрипт как C:\Anaconda3\python MyPythonScript.py
, я получаю ошибки, такие как
The deserializer cannot load the type to deserialize because type 'System.Collections.Generic.List`1[[RefData.LookUpDataItem, RefData, Version=1.0.6841.27933, Culture=neutral, PublicKeyToken=null]]' could not be found in assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. Check that the type being serialized has the same contract as the type being deserialized and the same assembly is used.
at System.Runtime.Serialization.XmlObjectSerializerReadContextComplex.InternalDeserializeInSharedTypeMode(XmlReaderDelegator xmlReader, Int32 declaredTypeID, Type declaredType, String name, String ns)
at System.Runtime.Serialization.XmlObjectSerializerReadContextComplex.InternalDeserialize(XmlReaderDelegator xmlReader, Type declaredType, String name, String ns)
at System.Runtime.Serialization.NetDataContractSerializer.InternalReadObject(XmlReaderDelegator xmlReader, Boolean verifyObjectName)
at System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver)
at Microsoft.ApplicationServer.Caching.Utility.Deserialize(Byte[][] buffers, Boolean checkTypeToLoad, Object context, IEnumerable`1 knownTypes)
at Microsoft.ApplicationServer.Caching.RoutingClient.SendMsgAndWait(RequestBody reqMsg, IRequestTracker& tracker)
at Microsoft.ApplicationServer.Caching.DataCache.SendReceive(RequestBody reqMsg, IMonitoringListener listener)
at Microsoft.ApplicationServer.Caching.DataCache.InternalGet(String key, DataCacheItemVersion& version, String region, IMonitoringListener listener)
at Microsoft.ApplicationServer.Caching.DataCache.<>c__DisplayClass49.<Get>b__48()
Программа извлекает некоторые данные с сервера кэширования Microsoft AppFabric.Кэширующие dll находятся в том же месте.Нет изменений в моей библиотеке dll или скрипте python, использующем их.Просто разные призывы.
Такое же поведение наблюдается как в установке Ananconda python 3.6, так и в автономной установке python 2.7.Это вообще невозможно - или есть что-то специфическое для кэширования и сериализации, которое вызывает проблемы?Любая помощь здесь будет высоко ценится.