我需要获得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库文件复制到新环境中?还是其他一些可以帮助的工具?
答案 0 :(得分:4)
不,我认为你完全误解了virtualenv的作用。 Virtualenv将在与主环境隔离的同一台计算机上创建一个新环境。在这样的环境中,您可以安装未在主环境中安装的软件包,使用--no-site-packages,您还可以将您与主要环境安装的模块隔离开来。
如果您需要在没有2.6的计算机上运行需要Python 2.6的程序,则需要在该计算机上安装Python 2.6。
答案 1 :(得分: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上用来安装我没有超级用户权限的软件。
答案 2 :(得分:0)
您尚未清楚解释为什么cx_Freeze
等不适合您。将Python应用程序分发到具有旧版本Python或甚至根本没有Python的机器的常规方法是像PyInstaller这样的工具(与cx_Freeze
在同一类工具中)。 PyInstaller制作所有依赖项的副本,并允许您创建一个包含所有Python依赖项的可执行文件。
你提到调整环境变量是你不能使用这些工具的原因;如果你详细说明为什么会这样,你可能会得到更有帮助的答案。