2016-06-15 120 views
2

我想獲得需要python 3.5的回購的虛擬環境。我使用的是Debian,從我所知道的情況來看,python 3.5沒有aptitude包。閱讀了一些文章後,建議下載3.5源代碼並編譯它。Python 3.5安裝pyvenv

運行make和install後,python3.5被安裝到/ usr/local/bin。我將它添加到$ PATH變量中。

這是我遇到問題的地方。在我跑完之後:

$ cd project-dir 
$ pyvenv env 
$ source env/bin/activate 
$ pip install -r requirements.txt 

我遇到了需要sudo來安裝正確軟件包的問題。我跑了:

$ which pip 

並且事實證明pip仍在使用pip的/ usr/local/bin版本。

$ echo $PATH 

返回

/home/me/project-dir/env/bin:/usr/local/bin:/usr/bin:/bin: ... 

我假設,因爲在/ usr /本地路徑虛擬環境在我的PATH變量path後問世,它是使用版本點子,而不是我的虛擬環境。

在virtualenv中運行正確版本的pip的最佳方式是什麼?我能想到的兩個選項是將二進制文件移動到/ usr/bin或修改我的虛擬env中的激活腳本,以將virtualenv路徑放在/ usr/local之後。

回答

2

Kesh的回答讓我朝着正確的方向前進。

問題是我實際上沒有在我的venv中安裝pip。

事實證明,當我從源碼構建python3.5時,我沒有libssl-dev包。它看起來像ensurepip的依賴關係之一是沒有安裝的python ssl包,因爲我沒有libssl-dev。

爲了解決這個問題,我重新安裝了libssl-dev軟件包來重新安裝python 3.5。重建的python現在包含了ssl包,它允許surepip在我的虛擬環境中安裝pip。

+0

很高興聽到我的回答讓你朝着正確的方向前進! –

+0

希望你支持我的答案,並投票贊成! –

1

嘗試在本地安裝它:

pip install --user -r requirements.txt 

這會,我相信,安裝文件在你$HOME目錄的子目錄(其中虛擬ENV相信還是會設置)。否則,我認爲你可以只使用:

/path/to/virtualenv/pip install -r requirements.txt 
+0

- 用戶將軟件包安裝到系統,而不是virtualenv。 我認爲第二個選項可以工作,但它不需要輸入項目路徑就可以刪除virtualenvs的一個很好的功能。 – knelson

2

選項1 您可以手動執行升級在虛擬環境中PIP

pip install -U pip 

選項2 升級裏面那個點子好方法軟件包 python -m ensurepip --upgrade確實會升級系統中的pip版本(如果它低於ensurepip中的版本)。

您都面臨這個問題,因爲VENV使用ensurepip添加PIP到新環境:

除非--without-PIP選項,則ensurepip將被調用到 引導PIP到虛擬環境。

Ensurepip軟件包不會從互聯網下載或從其他地方抓取文件,因爲所有必需的組件都已包含在軟件包中。這樣做會增加安全漏洞,因此不受支持。

Ensurepip不是爲了給你最新的點子,而是「a」點。要獲得最新的人在本文開頭使用手動方式。

要檢查ensurepip版本,你可以鍵入蟒蛇控制檯進一步閱讀import ensurepip print(ensurepip.version())

更多調查結果:

  1. 升級ensurepip使用手動檔 - https://github.com/python/cpython/commit/f649e9c44631c07e707842c42747b651b986dcc4
  2. What's the proper way to install pip, virtualenv, and distribute for Python?
  3. Comprehensive beginner's virtualenv tutorial?