具有所有Python库的virtualenv

具有所有Python库的virtualenv,python,linux,virtualenv,Python,Linux,Virtualenv,我需要获取Python代码,它依赖于Python 2.6,在只有Python 2.3的机器上运行(我没有根访问权限) 这是virtualenv的典型场景。唯一的问题是,我无法说服it部门也将所有库复制到新环境中 virtualenv --no-site-packages my_py26 不做我需要的事。库文件仍然只是指向/usr/lib/python2.6目录的链接 不,我想知道virtualenv是否是这个场景的正确解决方案。据我所知,它只适用于在具有完全相同Python版本的机器上运行。

我需要获取Python代码,它依赖于Python 2.6,在只有Python 2.3的机器上运行(我没有根访问权限)

这是virtualenv的典型场景。唯一的问题是,我无法说服it部门也将所有库复制到新环境中

virtualenv --no-site-packages my_py26 
不做我需要的事。库文件仍然只是指向
/usr/lib/python2.6
目录的链接

不,我想知道virtualenv是否是这个场景的正确解决方案。据我所知,它只适用于在具有完全相同Python版本的机器上运行。 像cx_Freeze之类的工具对我不起作用,因为我在一些环境变量tweeking之后启动Python文件


是否有一个隐藏的virtualenv选项可以将所有Python库文件复制到新环境中?或者其他一些工具可以帮上忙?

不,我想你完全误解了virtualenv的功能。VirtualEnvironment是在与主环境隔离的同一台机器上创建一个新环境。在这样的环境中,您可以安装不在主环境中安装的软件包,并且在没有站点软件包的情况下,您还可以将您与主环境中安装的模块隔离开来


如果您需要在没有Python 2.6的机器上运行需要Python 2.6的程序,则需要在该机器上安装Python 2.6

我无法帮助您解决您的虚拟化问题,因为我从未使用过它。但我只想指出一些供将来使用的东西

您可以将源代码中的软件安装到主文件夹中,并在没有root访问权限的情况下运行它们。例如,要安装python 2.6:

~/src/Python-2.6.2 $ ./configure --prefix=$HOME/local
~/src/Python-2.6.2 $ make
 ...
~/src/Python-2.6.2 $ make install
 ...
export PATH=$HOME/local/bin:$PATH
export LD_LIBRARY_PATH=$HOME/local/lib:$LD_LIBRARY_PATH

~/src/Python-2.6.2 $ which python
/home/name/local/bin/python

这就是我在Uni安装软件时使用的方法,我没有root访问权限。

您没有清楚解释为什么
cx\u Freeze
和类似的方法不适用于您。将Python应用程序分发到具有较旧版本的Python,甚至根本没有Python的机器上的正常方法是类似于工具的(与
cx\u Freeze
属于同一类工具)。PyInstaller复制所有依赖项,并允许您创建一个包含所有Python依赖项的可执行文件


你提到调整环境变量是你不能使用这些工具的原因;如果你详细解释这到底是为什么,你可能会得到一个更有用的答案。

不完全是这样,Lennart——像PyInstaller这样的工具可以在有较旧Python版本或根本没有Python的机器上安装依赖于2.6的Python程序。嗯。。。这是因为它包含Python:)但是你是对的,这是一个选项,尤其是目标机器没有编译器,所以他不能安装Python。这是一个很好的答案,因为正如Lennart指出的,用户不理解virtualenv的用途。