use*_*531 3 python virtualenv python-2.7
我的系统运行的是CentOS 6.我没有管理员权限,所以sudo不可用.我有Python 2.7.3,以及pip和virtualenv.我希望我可以使用它们来设置一个新的虚拟环境来安装和运行Python 3.5或更高版本.
我尝试了这里描述的方法: 在virtualenv中使用Python 3
但得到了这个错误:
$ virtualenv -p python3 venv
The path python3 (from --python=python3) does not exist
Run Code Online (Sandbox Code Playgroud)
我的系统也安装了一个Python 3.4模块,所以我试过了,但是virtualenv似乎没有在那里工作:
$ module load python/3.4.3
$ virtualenv -p python3 venv
-bash: virtualenv: command not found
Run Code Online (Sandbox Code Playgroud)
这似乎有意义,因为virtualenv只为Python 2.7安装:
$ module unload python
$ module load python/2.7
$ which virtualenv
/local/apps/python/2.7.3/bin/virtualenv
Run Code Online (Sandbox Code Playgroud)
因此,下一个逻辑步骤似乎是virtualenv为我的Python 3 安装......但这也不起作用:
$ pip3 install virtualenv
Traceback (most recent call last):
File "/local/apps/python/3.4.3/bin/pip3", line 7, in <module>
from pip import main
ImportError: cannot import name 'main'
Run Code Online (Sandbox Code Playgroud)
也
$ pip3 install --user virtualenv
Traceback (most recent call last):
File "/local/apps/python/3.4.3/bin/pip3", line 7, in <module>
from pip import main
ImportError: cannot import name 'main'
Run Code Online (Sandbox Code Playgroud)
我开始谷歌这个新的错误消息,但没有看到任何似乎与这种情况相关的东西.有任何想法吗?即使我可以virtualenv安装在我的Python 3.4模块上,我仍然无法将其升级到Python 3.5+吗?
为了解决这个问题,我还尝试从源代码编译自己的Python 3.6,但这也不起作用:
Python-3.6.0$ make install
if test "no-framework" = "no-framework" ; then \
/usr/bin/install -c python /usr/local/bin/python3.6m; \
else \
/usr/bin/install -c -s Mac/pythonw /usr/local/bin/python3.6m; \
fi
/usr/bin/install: cannot create regular file `/usr/local/bin/python3.6m': Permission denied
make: *** [altbininstall] Error 1
Run Code Online (Sandbox Code Playgroud)
更多背景信息:
$ which pip3
/local/apps/python/3.4.3/bin/pip3
$ which python
/local/apps/python/3.4.3/bin/python
Run Code Online (Sandbox Code Playgroud)
你可以下载miniconda或Anaconda.它不需要超级用户权限,因为它安装在您的主目录中.安装后,您可以创建如下的新环境:
conda create -n py35 python=3.5
Run Code Online (Sandbox Code Playgroud)
然后你可以切换到新环境:
source activate py35
Run Code Online (Sandbox Code Playgroud)