我有一個Python腳本,在我的開發PC上工作得非常好。兩者都是Windows 7,具有相同的Python版本(2.7.9)。然而在目標機器上,我收到了在一臺PC上錯誤「ValueError:無法格式化日期」,在其他PC上工作
ValueError: can't format dates this early
The error似乎來自pywin32模塊。
該代碼使用pywin32調用的第三方庫:
raw = win32com.client.Dispatch("MyLib.MyClass")
,然後失敗以後:
acq_time = raw.GetCreationDate()
現在我迷路了,爲什麼這工作我的電腦,而不是在目標機器上。兩者都具有Windows的「公司安裝」,例如,相同的區域和日期時間設置。
問題是什麼?我該如何解決它?
編輯:
查看評論。原因可能是使用了哪個運行庫。我仍在調查。我現在懷疑pywin32安裝時會出現哪些運行時間。爲什麼?因爲我的開發PC上的DependenyWalker說pywin依賴於我的Lotus Notes安裝中的MSVCR90.DLL
。這告訴我,它肯定不是「硬」鏈接。
更新二零一五年六月三十日:
我都錯了......現在的問題也發生在我的電腦。
更多信息。腳本讀取數據文件並將讀取的元數據插入到數據庫中。只有較舊的文件似乎受到 錯誤的影響,而不是新的文件(我現在認爲這是假設是錯誤的)。所以我的想法是在開發PC上初始加載,然後希望這個問題不會再出現在新文件中。
如果PC是腳本將運行,它讀取的文件位於Windows共享驅動器(映射網絡驅動器)的 上。我無法訪問該 驅動器,因此我只是將這些文件複製到我的電腦中。現在爲了完成最初的 加載,我請求訪問所述網絡驅動器和BOOM。它也沒有 工作從我的開發。機器從共享驅動器讀取時。
這個問題並不總是發生在同一個文件中。我現在認爲它與特定文件無關。我也在64位的PC上用64位python試過。這需要更長的時間直到發生錯誤。事實上,一個文件被成功讀取,在我的電腦上失敗。我現在認爲這是一種記憶問題?我相信它在日期行中總是失敗,因爲所有其他行只是返回null或一個空字符串而不會導致問題,並且完全可能這樣的值可能爲null。但是對於日期來說這是一個問題,它不應該爲空,然後拋出錯誤。
更新的編輯:
在我的電腦它總是失敗對同一文件。單獨加載該文件的效果非常好。我現在認爲這是某種計數器/數字溢出,在讀取n個文件後會出現問題。它與每次運行腳本時加載的文件數量有關,而與文件本身無關。單獨加載時失敗的文件。
兩臺機器上的'pywin32'版本相同嗎?圖書館的相同版本? –
Mark Hammond的鏈接評論說''_tcsftime在某些CRT實現(例如,vs2008 64位 - 也可能是其他)中死於過早的日期會導致「有幫助」。你用什麼CRT? –
Windows區域設置如何,特別是日期格式? –