2011-07-25 52 views
14

所以,我已經有了一個可笑的插件/包的Python程序。我希望能夠在其virtualenv中分發該程序,以便將軟件包捆綁在一起。但是,該程序適用於Windows,並且在Windows上不支持virtualenvs的「可重定位」功能(以及仍處於試驗階段)。virtualenv的哪些部分需要更改以重新定位它?

所以,我正在尋找寫腳本,或者只是寫指令來手動更改絕對路徑名稱來重新定位virtualenv。

我的問題是,如果有人知道我必須在virtualenv中查找絕對路徑名。我對Python包裝很陌生。 activate.bat腳本包含絕對路徑名,但是單個軟件包的絕對路徑名是否被硬編碼到其安裝中?

Making Environments Relocatable部分描述了爲什麼virtualenv不能簡單地移動,但沒有列出包含絕對路徑名的地方。

+0

「Making Environments Relocatable」中的當前文檔(正確地)說:_「警告:'--relocatable'選項目前有很多問題,並不能保證在任何情況下都能正常工作。這個選項可能會在未來版本的virtualenv中被棄用。「_重新創建一個python環境(例如,通過pip freeze/install要求)可能總是會比嘗試創建一個便攜/可重定位的更有優勢 – michael

回答

15

與其試圖手動執行此操作,您最好使用freeze選項至pip來創建需求文件。你現在可以用一個命令重建你的整個虛擬環境。

舊的virtualenv:

pip freeze > stable-req.txt 

在新的一個:

pip install -r stable-req.txt 
+0

這項工作,如果我沒有安裝所有的程序與點子?幾個插件(numpy,wxPython,PIL)不能使用PIP安裝,我的搜索似乎表明,他們不能安裝easy_install或PIP ,雖然我可能是錯的 – jmite

+0

看起來它可以適用於其中的大部分,但它沒有檢測到wx,它必須使用它的windows安裝程序安裝在env中,而不是通過pip或easy_install安裝,但凍結看起來像一個偉大的工具,謝謝! – jmite

+0

大多數那些過去對於Windows(numpy,PIL等)麻煩的軟件包現在都有.whl文件可用。使用最新版本的pip,'pip install'應該能夠找到.whl文件爲t軟管包裝,因此與任何其他包裝一樣容易地執行安裝。 –

7

爲您的虛擬環境目錄{ENV}請按照下列步驟

  1. 運行$ virtualenv --relocatable {ENV}
  2. 編輯{ENV}/bin/activate,使用vim或者您選擇
  3. 編輯VIRTUAL_ENV(約行〜42!)如果你正在尋找寫一個腳本來匹配新的目錄位置

所以,你可以導出VIRTUAL_ENV shell變量的編輯器或動態執行/ bin/activate上的編輯。

這就是我如何設置我的。

 
# env/bin/activate 
BIN_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 
# virtual env is at ./env 
ENV_DIR=`dirname $BIN_DIR` 
VIRTUAL_ENV=$ENV_DIR 
export VIRTUAL_ENV 
2

virtualenv-tools是一個腳本,你移動後,更新現有的virtualenv的位置。雖然它在Windows上沒有幫助,但它可能對其他人有用。

它更新:

  • 的virtualenv中激活腳本
  • 家當線在腳本中的virtualenv bin/目錄存儲在pyc文件
  • 絕對路徑
  • 符號鏈接在任何local/目錄
相關問題