2014-10-16 53 views
1

我爲DLL生成了一個win32com包裝,我試圖訪問它。它的工作原理除了一個名爲ReadPipeBytes的函數外。它適用於我的其他兩臺機器,但我使用的是不同的Python版本。這是錯誤:''對象沒有'ReadPipeBytes'屬性。我複製了相同的DLL到另一臺機器(它是一個驅動程序,我有相同的硬件,我試圖訪問。)我做了包裝文件比較,他們幾乎是相同的,除了它們生成的Python版本而3.3.5生成的版本不會把u'FunctionName'放在2.7版本的地方。如果我將包裝文件複製到無法工作的機器上,我會得到相同的錯誤(和/或字典文件)。從python訪問pywin32或win32com中的一項功能時出錯3.3.5

1)爲什麼會蟒蛇的版本,使閱讀這一個特定的功能差異,當其他功能工作正常(它不是包裝?

2)如何蟒蛇無法使用該功能稱爲readpipebytes時其他功能是否正常工作,以及何時使用我在其他機器上執行的相同文件?

+0

機器上的Python版本無法正常工作,可能是64位版本? – Werner 2014-10-16 16:12:15

+0

是的,但我有工作在一個不同的64位機器上,因爲有一個瘋狂的pywin32安裝,我有2.7.2版本的pywin32從3.3.2 python運行。工作和非工作機器都是64位windows7。在一臺獨立的機器上,我使用它運行在32位Windows XP上,沒有任何問題。也許它不喜歡64位? – laptop2d 2014-10-16 17:36:55

+0

我不認爲你可以在py3.x中使用py2.6版本的pywin32,並且你不能混合使用32位和64位的東西。換句話說,如果您使用Py3.x 64位,那麼您使用該版本的Python的所有庫等都必須是64位 - 這裏沒有專家,但這是我的理解。 – Werner 2014-10-17 08:23:35

回答

0

當您使用com時,您正在訪問的語言需要與com .dll或控件相同的「bittedness」。所以,如果你有一個32位控制或COM DLL你必須有一個32位的win32com。