簡體   English   中英

僅使用Python3的Virtualenv

[英]Virtualenv with only Python3

我有兩個不同的Ubuntu VM,第一個是14.04,第二個是16.04。 在第一個中,由於某種原因我用pyhton3創建virtualenv時,也安裝了python27

user@ubuntu:~/venv$ virtualenv  --python=python3 --no-site-packages py3-venv
Already using interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in /home/user/venv/py3-venv/bin/python3
Also creating executable in /home/user/venv/py3-venv/bin/python
Installing setuptools, pip, wheel...done.
user@ubuntu:~/venv$ source py3-venv/bin/activate
(py3-venv) user@ubuntu:~/venv$ python -V
Python 2.7.12

在第二台VM上完成的相同操作按預期工作

user@my-box:~/venv$ virtualenv -p /usr/bin/python3 py3-venv
Already using interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in /home/user/venv/py3-venv/bin/python3
Also creating executable in /home/user/venv/py3-venv/bin/python
Installing setuptools, pip, wheel...done.
user@my-box:~/venv$ source py3-venv/bin/activate
(py3-venv) user@my-box:~/venv$ which python
/home/user/venv/py3-venv/bin/python
(py3-venv) user@my-box:~/venv$ python -V
Python 3.5.2

即使我鍵入python命令,我也需要virtualenv來運行python3。 有什么想法怎么做?

[UPDATE]

這是我見過的最奇怪的事情

(py3-venv) user@ubuntu:~/venv$ which python
/home/user/venv/py3-venv/bin/python
(py3-venv) user@ubuntu:~/venv$ python -V
Python 2.7.12
(py3-venv) user@ubuntu:~/venv$ ./py3-venv/bin/python -V
Python 3.4.3

[更新2]

我完全迷路了...即使strace python命令也指向正確的文件

(py3-venv) user@ubuntu:~/venv$ strace python
execve("/home/user/venv/py3-venv/bin/python", ["python"], [/* 24 vars */]) = 0
brk(0)                                  = 0x204f000

[更新3]

如果我從PATH python命令中刪除/home/user/venv/py3-venv/bin ,則無法執行...請幫助!

(py3-venv) user@ubuntu:~$ export PATH=/home/user/venv/py3-venv/bin
(py3-venv) user@ubuntu:~$ echo $PATH
/home/user/venv/py3-venv/bin
(py3-venv) user@ubuntu:~$ python -V
Command 'python2.7' is available in the following places
 * /usr/bin/python2.7
 * /usr/local/bin/python2.7
The command could not be located because '/usr/bin:/usr/local/bin' is not included in the PATH environment variable.
python2.7: command not found

我同意關於虛擬環境的觀點。 您可以執行其他一些操作:

首先,我從.bashrc中刪除python別名(從其他答案中刪除)

然后創建一個Python 3虛擬環境:

$ mkdir venv
[vagrant@localhost ~]$ cd venv
[vagrant@localhost venv]$ virtualenv -p python3 python3_virtualenv
Running virtualenv with interpreter /usr/local/bin/python3
Using base prefix '/usr/local'
New python executable in /home/vagrant/venv/python3_virtualenv /bin/python3
Also creating executable in /home/vagrant/venv/python3_virtualenv/bin/python
Installing setuptools, pip, wheel...done.
[vagrant@localhost venv]$ source ~/venv/python3_virtualenv/bin/activate
(python3_virtualenv) [vagrant@localhost venv]$

Python 3已成功安裝為virtualenv。

  1. 您可以將以下行添加到.bash_profile中:

    源〜/ venv / python3_virtualenv / bin / activate

我現在將注銷 ,然后再次登錄:

$ vagrant ssh
Last login: Sat Jun  3 00:01:21 2017 from 10.0.2.2
(python3_virtualenv) [vagrant@localhost ~]$ python
Python 3.5.0 (default, Jun  2 2017, 18:10:55)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

〜/ venv / python3_virtualenv / bin / activate命令已自動運行,當我鍵入python時 ,發現Python 3.5.0


第二個選項是創建到python 3的python符號鏈接。

  1. 第二個選項是在/ usr / local / bin中添加一個python符號鏈接。 這將覆蓋python(在/ usr / bin目錄中)。

我在/ usr / local / bin目錄中手動安裝了Python 3。

Python 2在/ usr / bin目錄中:

$ vagrant ssh
Last login: Sat Jun  3 00:39:12 2017 from 10.0.2.2

[vagrant@localhost ~]$ which python3
/usr/local/bin/python3

[vagrant@localhost ~]$ which python2
/usr/bin/python2
[vagrant@localhost ~]$ cd /usr/local/bin/

我創建我的符號鏈接:

[vagrant@localhost bin]$ sudo ln -s python3 ./python

注銷:

[vagrant@localhost bin]$ exit
logout
Connection to 127.0.0.1 closed.

再次登錄:

rhubarb:scratch milesd$ vagrant ssh
Last login: Sat Jun  3 00:41:11 2017 from 10.0.2.2

/ usr / local / bin中 python現在“首先在路徑中被選中”:

[vagrant@localhost ~]$ python
Python 3.5.0 (default, Jun  2 2017, 18:10:55)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
[vagrant@localhost ~]$

我發現我的虛擬環境出了什么問題。 顯然,有人在用戶的主目錄中創建了一個.bash_aliases文件,並在執行python命令時創建了別名以使用python27,而這又覆蓋了我的venv的python。

(py3-venv) user@ubuntu:~$ python -V
Python 3.4.3

您需要在.bashrc文件中添加一個別名(別名python ='/ usr / local / bin / python3.5')或任何版本的python。

將此附加到您的.bashrc文件中:

$ echo "alias python='/usr/local/bin/python3.5'" >> .bashrc

您可以看到我現在退出/注銷。 當我再次ssh和python --version時,別名將我帶到python3:

[vagrant@localhost ~]$ exit
logout
Connection to 127.0.0.1 closed.
rhubarb:scratch milesd$ vagrant ssh
Last login: Fri Jun  2 18:15:57 2017 from 10.0.2.2
[vagrant@localhost ~]$ python --version
Python 3.5.0
[vagrant@localhost ~]$

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM