2

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

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

virtualenv --no-site-packages my_py26 

不做我需要的。库文件仍然只是指向/usr/lib/python2.6目录的链接。

不,我想知道 virtualenv 是否完全适合这种情况。据我了解,它仅针对在具有完全相同 Python 版本的机器上运行。cx_Freeze 之类的工具对我不起作用,因为我在一些环境变量 tweeking 之后启动 Python 文件。

是否有一个隐藏的 virtualenv 选项可以将所有 Python 库文件复制到新环境中?或者其他可以在这里提供帮助的工具?

4

3 回答 3

4

不,我认为您完全误解了 virtualenv 的作用。Virtualenv 是在与主环境隔离的同一台机器上创建一个新环境。在这样的环境中,您可以安装未安装在主环境中的软件包,并且使用 --no-site-packages 您还可以将您与主环境中安装的模块隔离开来。

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

于 2009-07-15T09:48:49.477 回答
4

我无法帮助您解决 virtualenv 问题,因为我从未使用过它。但我只是指出一些东西以供将来使用。

您可以将源代码中的软件安装到您的主文件夹中,并在没有 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 访问权限的软件的方法。

于 2009-07-15T09:50:43.607 回答
0

你还没有清楚地解释为什么cx_Freeze等等对你不起作用。将 Python 应用程序分发到具有较旧版本 Python 甚至根本没有 Python 的机器的常规方法是使用PyInstaller之类的工具(与cx_Freeze. PyInstaller 会复制所有依赖项,并允许您创建一个包含所有 Python 依赖项的可执行文件。

您提到调整环境变量是您不能使用此类工具的原因;如果您详细说明这是为什么,您可能会得到更有帮助的答案。

于 2009-07-15T09:57:38.273 回答