簡體   English   中英

如何強制python忽略或重新創建pyc / pyo文件?

[英]How to force python to ignore or recreate pyc/pyo files?

我正在開發一個使用多處理和進程池的科學python應用程序。 有時我犯了一個錯誤,自己掏出炸彈。 這導致我的筆記本電腦凍結,我需要進行硬重置。 但是,當我再次加載時,我的python安裝似乎已損壞。 我在import string等基本導入上遇到奇怪的錯誤。

我追溯到這一點,看起來python正試圖為系統目錄中安裝的一些系統模塊制作pyc / pyo(我在Windows中工作)。 我可以通過單擊安裝目錄,按修改時間排序並根據修改日期手動刪除在該運行中創建的所有pyc / pyo來臨時解決此問題。

有沒有辦法強制python忽略任何現有的pyc / pyos並在解釋器的啟動時重新創建它們? 或者,刪除系統Python安裝中的所有 pyc / pyo對象是否安全? 在我的情況下,這是C:\\Python27

通常,強制重新編譯的簡單方法是刪除.pyc文件,但在系統文件的情況下,您可能沒有.py所以要特別小心。

您最好的選擇可能是創建一個虛擬環境作為沙箱並保護您的文件,您可以根據需要輕松地重新創建它。

如果你已經從這樣運行那么可能你的任務不是你應該檢查這個。

我還強烈建議像限制用戶那樣運行測試,而不是像管理員或具有管理員權限的高級用戶那樣,這可能會使一些工作在沒有管理員權限的情況下運行,但有一些優點:

  1. 安全 - 有限的用戶必須非常努力地破壞系統,即如果管理員為所有用戶安裝了python,則有限用戶不應該具有對安裝目錄的寫訪問權,
  2. 部署 - 如果您將代碼傳遞給其他用戶,他們可能沒有管理員權限,但您會知道您的代碼將在沒有它們的情況下運行(給定先決條件),
  3. 可移植性 - 如果您想在Linux機器上運行,您的代碼不需要管理員權限才能運行,
  4. 可伸縮性 - 如果您有機會在超級計算機/集群上運行代碼,我可以保證它不會以管理員身份運行。

您可以觸摸所有.py,然后強制導入。

但是你為什么要這樣做呢?

我另外看到的一個主要用例是當你在git存儲庫中工作並在分支上切換時。 .py文件可能會使用不同的內容簽出但使用較舊的時間戳。 如果您不以某種方式強制重新創建.pyc文件,則會出現問題。

CKol

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM