我使用这些命令安装了Python 2.7
only_full_group_by
然后我创建了teh virtualenv以指向2.7安装
./configure --prefix=/usr/local --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
make && make altinstall
但如果我激活它指向2.6.6
$ virtualenv --python=/usr/local/bin/python2.7 testbox
Already using interpreter /usr/local/bin/python2.7
New python executable in /var/python_venv/testbox/bin/python2.7
Also creating executable in /var/python_venv/testbox/bin/python
Installing setuptools, pip, wheel...done.
$ source testbox/bin/activate
(testbox) $ python
Python 2.6.6 ( , Aug 18 2016, 15:13:37)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
编辑:
我不确定为什么这不起作用,但我仍然可以在我的apache DJANGO app中使用virtualenv,所以我不太关心
答案 0 :(得分:3)
另一种可能是您移动/重命名了 venv
路径上的文件夹。
venv/bin/activate
包含一个名为 VIRTUAL_ENV
的变量(用于在激活 venv
时更新路径)并且这可能具有对原始 venv
位置的硬编码引用.
VIRTUAL_ENV="/Users/<user-name>/<original-path>/venv"
export VIRTUAL_ENV
_OLD_VIRTUAL_PATH="$PATH"
PATH="$VIRTUAL_ENV/bin:$PATH"
export PATH
当您移动/重命名文件夹时,过时的 VIRTUAL_ENV
路径会在您 PATH
时添加到您的 activate
。因此,python
的第一个匹配项将位于 PATH
的更下方,并且第一个匹配项很可能是系统 python
。
您应该更新 venv
文件夹中这些过时的硬编码路径。
答案 1 :(得分:2)
底线:
您已将“python
”设置为shell别名(可能在您的shell启动脚本中)。它会干扰virtualenv
替换键入“python
”时要运行的内容的工作。删除别名,你很好。
您也不需要指定--python=/usr/local/bin/python2.7
'因为您在Python安装中使用virtualenv
,所以默认情况下它已经使用了它。
virtualenv 1.10.1
的WFM :(请参阅下面的进一步猜测)
$ virtualenv --python=/usr/local/bin/python2.7 testbox
Running virtualenv with interpreter /usr/local/bin/python2.7
New python executable in testbox/bin/python2.7
Also creating executable in testbox/bin/python
Installing Setuptools.........................................done.
Installing Pip................................................done.
$ ls -l testbox/bin/
total 40
-rw-r--r--. 1 root root 2194 Dec 7 03:06 activate
-rw-r--r--. 1 root root 1250 Dec 7 03:06 activate.csh
-rw-r--r--. 1 root root 2389 Dec 7 03:06 activate.fish
-rw-r--r--. 1 root root 1129 Dec 7 03:06 activate_this.py
-rwxr-xr-x. 1 root root 332 Dec 7 03:06 easy_install
-rwxr-xr-x. 1 root root 340 Dec 7 03:06 easy_install-2.7
-rwxr-xr-x. 1 root root 293 Dec 7 03:06 pip
-rwxr-xr-x. 1 root root 301 Dec 7 03:06 pip-2.7
lrwxrwxrwx. 1 root root 9 Dec 7 03:06 python -> python2.7
lrwxrwxrwx. 1 root root 9 Dec 7 03:06 python2 -> python2.7
-rwxr-xr-x. 1 root root 7788 Dec 7 03:06 python2.7
activate
所做的主要是:
PATH="$VIRTUAL_ENV/bin:$PATH"
export PATH
我的猜测是您正在使用为virtualenv
安装的/usr/local/bin/python2.7
。这就是“已经使用...”消息的原因。如果是这种情况,则不需要传递--python
,因为默认情况下virtualenv
已经使用它(请查看它的shebang)。
但是,由于virtualenv
创建了无版本的可执行文件而activate
更改了PATH
,因此您应该/var/python_venv/testbox/bin/python
为python
。
python
在您的情况下是别名,并且activate
不使用别名 - 您必须在bash
启动脚本中设置它。 答案 2 :(得分:1)
如果您使用的是 Windows ,那么这似乎对我有用。
检查环境变量并将系统中的所有Python路径声明移至用户环境变量。
答案 3 :(得分:0)
如果您激活了virtualenv,并且which python
给了/usr/bin/python
而不是yourvirtualenv_path/bin/python
,则您的.bashrc或.bash_aliases文件中可能会像我一样拥有bash别名。
修复它的步骤:
type python
~/.bash_aliases
或~/.bashrc
alias python='$(which python)' from ~/.bash_aliases
source ~/.bashrc
和source ~/.bash_aliases
which python
应该给出:yourvirtualenv_path/bin/python