我的僱主有一個專用模塊我們用於內部單元/系統測試;然而,這個模塊的作者不再在這裏工作,我被要求用它來測試一些設備。強制python使用舊版本的模塊(比我現在安裝的版本)
問題是pyfoo
需要一個古老的版本twisted
(v8.2.0),它在33個不同的文件中輸入twisted
。我嘗試在v11.0.0下運行pyfoo
的單元測試,我甚至沒有看到TCP SYN包。不幸的是,我已經在我的實驗室linux服務器上安裝了twisted v11.0.0,並且我有自己的代碼依賴於它。
我一直令人頭大我的大腦解決的辦法,但我只能想出以下選項:
選項A。安裝新版本的python,安裝virtualenv
,然後在virtualenv
下安裝舊版本twisted
。在這個新版本的python下運行需要pyfoo
的測試。
選項B。使用以下內容編輯所有33個文件:DIR = '../'; sys.path.insert(0, DIR)
並將舊版本的python安裝在源代碼下的相應目錄中。
選項C。嘗試修復pyfoo
使用v11.0.0
有沒有我失蹤的選項?除了上面的選項A之外,還有更好的方法來解決這個問題嗎?
END-NOTES:
- 我們稱之爲
pyfoo
爲便於討論 - 單元測試連接到我們的本地實驗室的一臺服務器,並行使基本的telnet功能
- 此選項幾乎是一個非首發...
pyfoo
是不平凡的,我有這個工作的一個簡短的截止日期。
在Linux上?使用'chroot'! :D – tMC
@tMC,我*想*我明白你在說什麼,但讓我明白......你是否建議我在'/ chroot/python/site-packages'中安裝扭曲的0.8.2版本,並且然後在執行測試之前將'chroot'指向該目錄? –
我不知道它是否真的能與你的env一起工作,但將chroot想象成一種虛擬化。要在chroot中運行python,您還必須擁有所有的python依賴的庫,可能是一個proc掛載等。我真的只考慮過它,因爲有人提出了一個真正的VM解決方案。 – tMC