簡體   English   中英

在計算機之間遷移virtualenv和Github

[英]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:

  • 在另一個系統上安裝virtualenv
  • 獲取requirements.txt ,通過寫一個或存儲pip freeze的輸出(並編輯輸出)
  • 將requirements.txt移動到另一個系統,創建一個新的virtualenv,並通過pip install -r requirements.txt安裝庫。
  • 克隆另一個系統上的git存儲庫

對於更高級的需求,您可以創建一個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.

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