在计算机之间迁移virtualenv和Github

时间:2012-09-13 15:47:21

标签: python git github virtualenv

我最近主要使用Python 2.7和Django 1.3.3(在Heroku上托管)工作,我有多个项目,我维护。我一直在使用Ubuntu在VirtualBox内部运行的桌面上工作,但最近不得不去旅行并想把所有东西都装在我的笔记本上。但是,我很快发现,virtualenv + Github很容易创建项目,但我努力尝试将它们移到我的笔记本上。我想出的方法是创建新的virtualenv,然后从github克隆代码。但是,我不能在我真正想要的文件夹中这样做,因为它会说文件夹不是空的。所以,我会将它克隆到一个tmp文件夹,而不是将它们剪切/粘贴到我真正想要的地方。不是可怕的,但我觉得我在这里遗漏了一些东西,而且应该更容易。也许首先克隆,然后mkvirtualenv?

这不是一个令人沮丧的问题,但我正在考虑做一些更改(比如乘坐VirtualBox并使用双启动系统),如果我能让它变得更平滑,那就太棒了。 :)

最后,我发现并阅读了一些关于在计算机之间移动git repos的帖子,但我没有看到任何与Virtualenv的交易(也许我只是错过了它)。

编辑:为了清楚并避免混淆,我不是试图“移动”virtualenv。我只是在谈论创建一个新方法的最佳方式。安装软件包,然后从github克隆repo。

4 个答案:

答案 0 :(得分:14)

您唯一需要的工作流程是:

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安装的库并将其检入回购。

答案 1 :(得分:9)

那是因为你甚至不应该将virtualenvs移动到一个系统上的不同位置(有重定位支持,但它是实验性的),更不用说从一个系统到另一个系统了。创建一个新的virtualenv:

  • 在其他系统上安装virtualenv
  • 通过编写一个requirements.txt或存储pip freeze的输出(并编辑输出)来获取pip install -r requirements.txt
  • 将requirements.txt移至其他系统,创建新的virtualenv,并通过{{1}}安装库。
  • 克隆其他系统上的git存储库

对于更高级的需求,您可以创建一个bootstrapping脚本,其中包含virtualenv +自定义代码以设置其他任何内容。

编辑:将virtualenv的根目录和存储库的根目录放在同一目录中对我来说似乎是个糟糕的主意。将存储库放在virtualenv根目录下的目录中,或将它们放入完全独立的树中。你不仅可以避免使用git(理所当然 - 通常,没有被git跟踪的所有内容都是公平的游戏删除)抱怨现有文件,你也可以将virtualenv用于多个存储库并避免名称冲突。

答案 2 :(得分:3)

除了创建新的virtualenv的脚本之外,你应该创建一个包含所有依赖项的requirements.txt文件(例如Django1.3),然后你可以运行pip install -r requirements.txt这将安装所有的依赖项对你而言。

您甚至可以通过执行pip freeze > stable-req.txt为您创建pip,这将打印出您当前virtualenv中的依赖项。然后,您可以在版本控制下保留requirements.txt。

答案 3 :(得分:1)

关于virtualenv的好处是你可以描述如何制作一个,你可以在多个平台上重复制作它。

所以,不是克隆整个事物,而是克隆一个方法来一致地创建virtualenv,并在你的git存储库中拥有它。这样就可以避免特定于平台的恶意。

相关问题