使用不同Python安装virtualenv时出现断言错误
我的服务器上装的是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 个回答
我没有足够的积分来添加评论。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 的回答下作为评论。我会把我的删掉。
我没有足够的积分来添加评论,而且这个问题已经有3年了,不过这可能对某些人有用。在Windows系统中,你需要指定到python.exe的完整路径,但在Linux或OS X系统中,你只需要指定到文件夹就可以了。举个例子:
Windows:
virtualenv -p <PATH TO PYTHON.EXE> venv
这段代码会在当前目录下创建一个名为“venv”的子文件夹,用来存放虚拟环境。
在阅读并尝试了这个问题后,我发现这个错误可能和运行./configure
时没有加--prefix
有关。
所以我运行了./configure --prefix=/Path/To/Where/I/Want/Python/After/Compilation/
(在我的情况下是$HOME/packages/Python-2.7
),然后我输入了make
,接着是make install
(没有使用sudo
,这样Python就安全地安装到了我指定的位置,而不是以root身份安装)。之后,虚拟环境的初始化就没有再出现AssertionError
的错误,一切都顺利运行了。
希望作者回答的问题最终能帮助到某个人。 :)