我創建並激活的virtualenv(VENV)使用Python 3.3的做它的內置方式:爲什麼分發和點安裝到我的virtualenv的./local/bin?
$ python3.3 -m venv env
$ source env/bin/activate
此時python
是我的virtualenv蟒蛇,這是我想到:
(env) $ which python
/my_home_directory/env/bin/python
現在我想安裝分發和點子,於是我下載安裝腳本並運行它們:
(env)$ wget http://python-distribute.org/distribute_setup.py
(env)$ wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py
(env)$ python distribute_setup.py
(env)$ python get-pip.py
這些命令完成更迭sfully。在這一點上,我檢查我的venv找到另一個名爲「本地」的目錄,這是以前沒有的。 ENV/local/bin目錄包含了我的easy_install和點子的可執行文件,並且他們還在化名爲我係統現有的easy_install和點子:
(env)$ ls env
bin include lib local pyvenv.cfg
(env)$ ls env/bin
activate pydoc python python3 python3.3
(env)$ ls env/local/bin
easy_install easy_install-3.3 pip pip-3.3
(env)$ which easy_install
/usr/bin/easy_install
(env)$ which pip
/usr/bin/pip
我相信這是在Python 2.x的行爲出發。在這一點上,我預計easy_install
和pip
將使用virtualenv的副本,並使用它們來安裝雞蛋將把它們放在virtualenv。
走得更遠,我打開env/bin/activate來發現env/bin是系統路徑的前綴,但是env/local/bin不是。這解釋了我所看到的行爲。
_OLD_VIRTUAL_PATH="$PATH"
PATH="$VIRTUAL_ENV/bin:$PATH"
PATH="$VIRTUAL_ENV/local/bin:$PATH" # my new line
export PATH
那麼,什麼是怎麼回事:我可以通過編輯ENV /斌/激活的ENV /本地/ bin目錄添加到路徑,像解決這個問題呢?這是一個錯誤,還是我錯過了什麼?
我在Ubuntu 12.10的情況下,有所作爲。
我以爲virtualenv應該包含'pip' /'easy_install'了嗎? – MattDMo 2013-03-12 20:41:03
奇怪。我在Debian上使用Python 3.3的個人版本,並且在'env/bin'中爲我分發/ pip install。你是否從Ubuntu存儲庫獲得3.3版本的副本?如果是,請嘗試構建本地副本並查看其是否正常工作。 – eryksun 2013-03-13 08:38:21
@MattDMo我相信當您使用'virtualenv'命令時,pip和easy_install會被包含在內,但從文檔來看,Python 3.3的venv模塊似乎並不是這樣。 @eryksun這確實是Ubuntu的Python 3.3版本。我會嘗試在本地建設並回報。 – 2013-03-13 13:19:20