我使用以下命令安装了Python 2.7
./configure --prefix=/usr/local --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
make && make altinstall
然后我创建了virtualenv来指向2.7安装
$ 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.
>>>
但是如果我激活它,它的指向2.6.6
cat /etc/redhat-release
CentOS release 6.6 (Final)
编辑:
我不确定为什么这行不通,但是我仍然可以在我的apache DJANGO应用程序中使用virtualenv,所以我不太担心
底线:
你已将“ python
”设置为外壳程序别名(可能是在你的外壳程序启动脚本中)。它会干扰virtualenv
你替换键入“ python
”后将要运行的内容的工作。删除别名,就可以了。
你也不需要在该Python安装中指定--python=/usr/local/bin/python2.7
正在使用的'cuz virtualenv
,因此默认情况下它已经在使用它。
WFM virtualenv 1.10.1
::(请参见下面的猜测)
$ 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
as python
。
python
在你的情况下,因为是别名,并且activate
不使用别名-你必须在bash
启动脚本中对其进行设置。
它对您
python
有用,因为您没有别名给系统python。如果添加alias python=/usr/bin/python
,.bashrc
则运行时将获得与OP相同的结果python
。@alvits,它不应该-这就是我要开车去的地方。
我的观点是,您的帖子不是解决问题的方法。解决的办法是摆脱别名。Django按照声称的方式工作,因为它从未使用过别名。仅交互式外壳程序使用别名。
@alvits也是我的解决方案。但是我也在解释它。
如何在Kubuntu 17.10中删除别名。用什么脚本写的?