[英]Migrating virtualenv and Github between computers
我主要使用Python 2.7和Django 1.3.3(在Heroku上托管)工作,我有多個項目,我維護。 我一直在使用Ubuntu在VirtualBox內部運行的桌面上工作,但最近不得不去旅行並想把所有東西都裝在我的筆記本上。 但是,我很快發現,virtualenv + Github很容易創建項目,但我努力嘗試將它們移到我的筆記本上。 我想出的方法是創建新的virtualenv,然后從github克隆代碼。 但是,我不能在我真正想要的文件夾中這樣做,因為它會說文件夾不是空的。 所以,我會將它克隆到一個tmp文件夾,而不是將它們剪切/粘貼到我真正想要的地方。 不是可怕的,但我覺得我在這里遺漏了一些東西,而且應該更容易。 也許首先克隆,然后mkvirtualenv?
這不是一個令人討厭的問題,但我正在考慮做一些更改(比如乘坐VirtualBox並使用雙啟動系統),如果我能讓它變得更平滑,那將會很棒。 :)
最后,我發現並閱讀了一些關於在計算機之間移動git repos的帖子,但我沒有看到任何與Virtualenv的交易(也許我只是錯過了它)。
編輯:為了清楚並避免混淆,我不是試圖“移動”virtualenv。 我只是在談論創建一個新方法的最佳方式。 安裝包,然后從github克隆repo。
您應該需要的唯一工作流程是:
git clone repo_url somedir
cd somedir
virtualenv <name of environment directory>
source <name of environment directory>/bin/activate
pip install -r requirements.txt
這假設你已經運行pip freeze > requirements.txt
(當venv被激活時)列出所有virtualenv-pip安裝的庫並將其檢入repo。
那是因為你甚至不應該將virtualenvs移動到一個系統上的不同位置(有重定位支持,但它是實驗性的),更不用說從一個系統到另一個系統了。 創建一個新的virtualenv:
requirements.txt
,通過寫一個或存儲pip freeze
的輸出(並編輯輸出) pip install -r requirements.txt
安裝庫。 對於更高級的需求,您可以創建一個bootstrapping腳本,其中包含virtualenv +自定義代碼以設置其他任何內容。
編輯:擁有virtualenv的根和存儲庫的根在同一目錄對我來說似乎是一個非常糟糕的主意。 將存儲庫放在virtualenv根目錄下的目錄中,或將它們放入完全獨立的樹中。 不僅你避免使用git(理所當然 - 通常,沒有被git跟蹤的所有內容都是公平的游戲刪除)抱怨現有文件,你也可以使用virtualenv來存儲多個存儲庫並避免名稱沖突。
除了腳本創建一個新的virtualenv之外,你應該創建一個包含所有依賴項的requirements.txt文件(例如Django1.3),然后你可以運行pip install -r requirements.txt
這將安裝所有的依賴項您。
您甚至可以通過pip freeze > stable-req.txt
為您創建pip freeze > stable-req.txt
,這將打印出您當前virtualenv中的依賴項。 然后,您可以在版本控制下保留requirements.txt。
關於virtualenv的好處是你可以描述如何制作一個,你可以在多個平台上重復它。
因此,不是克隆整個事物,而是克隆一個方法來一致地創建virtualenv,並在git存儲庫中擁有它。 這樣您就可以避免特定於平台的惡意軟件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.