2016-01-25 84 views
5

我有一个virtualenv位于/home/user/virtualenvs/Environment。现在我需要在另一台PC上使用这个环境。所以我安装了virtualenv-clone并用它来克隆/Environment。然后我通过USB将它复制到另一台PC上。我可以source activate激活它,但是当我尝试使用sudo ./Environment/bin/python启动Python解释器,我得到复制完成virtualenv到另一台电脑

./bin/python: 1: ./bin/python: Syntax Error: "(" unexpected 

执行它没有sudo给我一个错误,告诉我有在二进制文件格式的错误。 但是,这怎么可能?我只是复制它。还是有更好的方法来做到这一点?我不能仅仅使用pip freeze,因为我自己编写的/Environment/lib/python2.7/site-packages/中有一些包,我也需要复制它们。据我了解,pip freeze只是创建一个包,然后下载和安装的软件包列表。

+0

那些软件包是如何进入站点包的呢?你必须安装它们,当然它们必须存在于某个地方的版本控制中。 –

+0

我创建了一个文件夹,添加了一个'__init __。py'并将模块放在那里,这样我就可以从我的项目中访问它们,它使用virtualenv。 – vicco

+0

那么你不应该这样做。你打算如何部署这些库?您需要将它们放置在可以从中安装的位置,并且需要将它们打包,以便可以通过点安装它们。或者,如果他们只是你项目的一部分,他们应该在你自己的项目中。 –

回答

5

执行下面的源计算机上的步骤

  1. workon [environment_name]
  2. PIP冷冻> requirements.txt
  3. 拷贝requirements.txt到其他PC

在其他PC

  1. 使用mkvirtualenv创建虚拟环境[ environment_name]
  2. workon [environment_name]
  3. PIP安装-r requirements.txt

你应该做的事!

similar questionHow to Copy/Clone a Virtual Environment from Server to Local Machine

+0

这是否也复制了我自己编写的'site-packages'中的软件包? – vicco

+0

它将在源计算机上创建工作环境的副本。它会自行下载它所需的全部内容 –

+0

我不太了解它如何重新创建我自己从文本文件中编写的包? requirements.txt只包含可供下载的软件包。 – vicco

1

我认为发生的是,你只是在源文件中复制符号链接到目标机器的二进制文件(不再链接)。您应该使用rsync -l将其复制以保留这些链接。

相关问题