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

在另一台计算机上安装相同的python环境,python,linux,Python,Linux,我正在我的桌面(OSX)上开发一个python项目,它运行得很好。现在我需要在运行Linux的计算集群上运行它,而我没有根访问权限。我在计算集群的家中本地安装了Anaconda。然后,当我在那里运行我的项目时,我遇到了很多奇怪的bug和错误。代码在我的桌面上运行良好。所以我想问题可能是Anaconda比我有新的R模块,这可能会导致错误。(向后兼容性问题) 有没有办法在计算集群上使用桌面上相同的python模块版本 我想知道是否有一个命令可以生成我桌面上的所有软件包和模块及其版本,然后将此文件导入

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

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


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

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

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

help('modules')
使用pyenv控制python版本 设计用于将python安装到主文件夹中,因此您不需要root访问(但即使使用root访问,这也是一个好主意),它允许您在主文件夹层次结构中使用指定版本的python,而不是操作系统版本。您还应该安装虚拟环境,以便为您的项目使用虚拟环境(这并不是绝对必要的,但虚拟环境是一个很好的主意,您应该始终使用虚拟环境,使用pyenv几乎不费吹灰之力)

pyenv的一个优点是
pyenv local
命令,该命令指定文件夹(和子文件夹)应使用哪个版本的python(或哪个virtualenv),在项目文件夹中使用
pyenv local
设置python版本后,无论何时使用
python
命令,它都将使用
pyenv local
设置的版本。如果您只安装了一个版本的python,而不使用virtualenv(在这种情况下,您可以使用
pyenv global
为用户设置版本),则不需要它。pyenv local/global设置最简单的一点是,它在脚本和手动调用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 local
pyenv global
设置了pyenv)并运行:

这将在python环境中安装相同的模块

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

我认为您应该逐个处理新的错误。重新安装Python软件包并不难。:)不确定这是否有帮助,但pyinstaller会查看应用程序的所有依赖项,并创建一个安装程序,为新用户获取这些依赖项。您是否将Mac中的python代码文件更改为Linux文件样式?Mac中的文本文件使用CR(“\r”)作为行分隔符,Unix/Linux中的文本文件使用LF(“\n”)作为行分隔符。将文件从Mac传输到Unix/Linux时,需要将CR转换为LF。
pip install -r requirements.txt