在另一台机器上安装相同的python环境

时间:2014-10-09 07:59:15

标签: python linux

我正在我的桌面(OS X)上开发一个python项目,它运行良好。现在我需要在运行Linux的计算集群上运行它,我没有root访问权限。在我的计算集群中,我在本地安装了Anaconda。然后,当我在那里运行我的项目时,我遇到了很多奇怪的错误和错误。代码在我的桌面上正常运行。所以我想可能问题是,Anaconda可能有比我更新的模块,这可能会导致错误。 (向后兼容性问题)

有没有办法在计算群集的桌面上使用相同的python模块版本?

我想知道是否有一个命令可以生成我桌面上的所有软件包和模块及其版本,然后将该文件导入该linux机器中的某个工具,然后我得到了我的设置的克隆版本。有类似的东西吗?

2 个答案:

答案 0 :(得分:1)

使用pyenv来控制python版本

pyenv用于将python安装到主文件夹中,因此您不需要root访问权限(但即使使用root访问权限也是一个好主意),它允许您在主文件夹中使用指定版本的python层次结构而不是OS版本。您还应该安装pyenv virtualenv,这样您就可以为项目使用虚拟环境(不是严格必需的,但虚拟环境是一个好主意,您应该总是使用一个,使用pyenv它们几乎毫不费力)。

关于pyenv的一个很好的事情是pyenv local命令,它指定在使用pyenv local后,应该将哪个版本的python(或者virtualenv)用于文件夹(和子文件夹)在你的项目文件夹中设置python版本,只要你使用python命令,它就会使用pyenv local设置的版本。如果您只安装一个版本的python,并且不使用virtualenv,则不需要它(在这种情况下,您可以使用pyenv global为用户设置版本)。关于pyenv本地/全局设置的最重要的事情是它适用于脚本和手动调用python,它与其他需要激活的python环境管理器不同,它只是一劳永逸。

简而言之,一旦你设置了pyenv,就可以准确控制python的运行版本,并且因为它安装在主文件夹中,操作系统无权影响它。

安装了pyenv和pyenv virtualenv之后,您将使用它来安装与开发机器上使用的相同版本的python,您运行的命令将是这样的:

pyenv install 3.4.2
pyenv virtualenv 3.4.2 my_project_env
cd my_project
pyenv local my_project_env

将模块安装到python环境

要获取使用pip freeze的python模块版本列表,可以在开发机器上执行此操作:

pip freeze > requirements.txt

现在将requirements.txt复制到您的部署计算机(已使用pyenv localpyenv global设置了pyenv)并运行:

pip install -r requirements.txt

将相同的模块安装到python环境中。

复制pyenv

虽然有点狡猾,但是一旦你完成了这个,你甚至可以将整个安装(即至少.bashrc文件和.pyenv文件夹)复制到其他机器上,如果这些机器具有相同的操作系统和主文件夹具有相同的名称,移植的环境应该可以正常工作。使用安装脚本可能更负责任,但我已经复制了pyenv环境而没有发生任何可怕的事情。

答案 1 :(得分:0)

如果你安装了pip,你可以尝试这个pip freeze

如果你想从python shell获取模块列表:

help('modules')