2017-02-04 50 views
0

我對發生的事情有點困惑,但我可能只是誤解了virtualenv是如何工作的。瞭解pip,virtualenv和軟件包

首先,我發現我得到錯誤,因爲我的git文件夾的路徑中有空格。刪除路徑中的空格後,我創建了一個新的virtualenv,然後當激活的pip列表開始正常工作時 - 顯示安裝到site-packages目錄中的內容。請注意,我沒有使用--no-site-packages創建venv,並且我沒有使用pip freeze創建一個requirements.txt。

這裏的混亂開始的地方......

在家裏,我的git拉同步了,我看到新的VENV文件夾,但:

  1. 激活VENV和使用PIP列表不不顯示在工作中安裝的軟件包/進入回購站的軟件包。
  2. 例如,PyQt文件夾的大小不到工作時的一半。注意QT本身安裝在工作中,但不在家中(顯然,獨立安裝,不是pip)。另一個例子是openpyxl。文件夾在那裏,但在pip列表中沒有提及。

pip freeze是否存在是因爲在獨立的計算機上設置事物意味着您需要全局安裝requirements.txt中列出的內容(如果我創建了一個)?我認爲venv將包含所有內容,並且軟件包不需要安裝,因爲它們已經在文件夾中。

我知道它在virtualenv文檔中提到gitignore env,但我不明白爲什麼。我聽說它更容易在回購中獲得。當然,除非這是一個禁忌,否則我的麻煩。

我將不勝感激一些指導,瞭解如何使用多臺計算機(當然還有多人)一起使用pip,venv和git。你會認爲谷歌會解決它,但到目前爲止,這些細節已經躲過了我。

感謝

回答

1

以我的經驗來管理跨多臺計算機Python項目的最好辦法是,不要試圖用你的程序一起分發PIP封裝或安裝的virtualenv,因爲這可能會導致各種問題。事實上,我甚至不確定你想要做什麼是可能的。相反,我會建議如下:

  1. 加入env.gitignore文件從您的git回購排除你的virtualenv安裝。

  2. 運行pip freeze > requirements.txt將所有需要的軟件包寫入requirements.txt

  3. 在任何其他需要運行該程序的計算機上,運行pip install -r requirements.txt以安裝所需的軟件包。

這種做法,除了是相當簡單的,也給你(和其他人誰可能要運行程序)的靈活性,以建立自己的本地Python環境然而他們想。

+0

感謝,是有道理的。 – JamesK

0

首先,我不是這方面的專家,但在這裏。

Git是版本控制。你用git快速拍攝文件&文件的變化。就像設置一個檢查點一樣,監視&軌道的重要工作已完成&隨版本控制器更改。

Virtualenv只是一個虛擬環境。就像設置服務器一樣,您正在設置Python的虛擬環境。

使用virtualenv,您可以設置使用哪個版本的python/pip。 pip是一個包管理系統。它可以幫助你拉動你需要的所有依賴包。 如果一個圖書館需要其他物品,那麼它也會被拖拽。 這種類型的「圖書館管理」有很多種語言可供選擇。

使用virtualenv,您可以指定要使用的內容; python2.7或3.5,或者你需要的任何版本,只要它在它正在使用的機器上。

當你激活你的virtualenv後,你可以安裝你需要的庫。當然,當你在那個項目中激活這個virtualenv時,這些庫是特定的。

requirements.txt文件只是一個地方拍攝你有什麼「pip安裝」編輯。您可以將該文件傳輸到其他項目,並將其他位置的庫安裝到其他位置或者,您可以使用git將這些庫放入回購站,但可能會遇到問題。

就我個人而言,我不認爲我可以沒有virtualenv工作。我的一個項目可能需要python2.7,另一個我看到需要python3.4,因此它允許您靈活地使用它。

另外,當設置你的服務器(Apache或Nginx)時,你需要指出你需要你的網站運行的virtualenv。

針對所有這些設置,我只是一個新手,但愛蟒& django。

我希望我能做到這一點。 快樂編碼

請參閱以下文檔以獲取更詳細的配置&解釋。

[https://virtualenv.pypa.io/en/stable/][1]

[https://github.com/pypa/pip][1]

[https://git-scm.com/book/en/v2/Getting-Started-Git-Basics][1]