使用不同Python安装virtualenv时出现断言错误

25 投票
3 回答
10709 浏览
提问于 2025-04-16 11:50

我的服务器上装的是Python2.5,我想升级到最新的Python(在我的情况下是2.7.x)。我从源代码编译了Python,并下载了最新的virtualenv(1.5.1)。

现在我基本上想做的是:

./packages/virtualenv/virtualenv.py --python=packages/Python-2.7/python env/

输入:

./packages/virtualenv/virtualenv.py

提供:

1.5.1

在输入时:

packages/Python-2.7/python

提供:

Python 2.7 (r27:82500, Nov 21 2010, 23:19:15) 
[GCC 4.3.2] on linux2
(cut help mesage)
>>>

但是运行virtualenv时出现了:

AssertionError: 文件名/packages/Python-2.7/Lib/os.py没有以这些前缀之一开头:['/usr/local']

这是什么意思,我到底做错了什么或者没做错什么。

附注: 在构建环境和Python时,我参考了这个问题:如何解决使用自定义构建的Python创建virtualenv环境时的问题?

3 个回答

2

我没有足够的积分来添加评论。Mike 的回答帮了我大忙。我是在使用Windows系统。

我遇到了这个错误:

AssertionError: Filename C:\Python35\Lib\os.py does not start with any of these prefixes: ['c:\\python35', 'c:\\python35']

我必须运行这个-

virtualenv -p C:\Python35\python.exe venv

还需要从以管理员身份打开的命令提示符中运行这个。否则会出现错误

PermissionError: [WinError 5] Access is denied

有足够积分的人请把这个添加到Mike 的回答下作为评论。我会把我的删掉。

19

我没有足够的积分来添加评论,而且这个问题已经有3年了,不过这可能对某些人有用。在Windows系统中,你需要指定到python.exe的完整路径,但在Linux或OS X系统中,你只需要指定到文件夹就可以了。举个例子:

Windows:

virtualenv -p <PATH TO PYTHON.EXE> venv

这段代码会在当前目录下创建一个名为“venv”的子文件夹,用来存放虚拟环境。

55

在阅读并尝试了这个问题后,我发现这个错误可能和运行./configure时没有加--prefix有关。

所以我运行了./configure --prefix=/Path/To/Where/I/Want/Python/After/Compilation/(在我的情况下是$HOME/packages/Python-2.7),然后我输入了make,接着是make install(没有使用sudo,这样Python就安全地安装到了我指定的位置,而不是以root身份安装)。之后,虚拟环境的初始化就没有再出现AssertionError的错误,一切都顺利运行了。

希望作者回答的问题最终能帮助到某个人。 :)

撰写回答