linux 虚拟环境问题
1.python环境
python2和python3命令用来区分python版本
pip2和pip3命令用来区分pip,你的包到底安装在哪里pip3 install xxx
sudo apt install python3-pip这是安装pip3
2.安装虚拟环境
pip install virtualenvwrapper #直接安装虚拟环境容器来顺便安装virtualenv
有可能:必须使用sudo pip来安装virtualenvwrapper。不是pip3
注意需要先修改环境变量。否则命名无法使用
vim ~/.bashrc 在最底部增加
#这是为了让 WORKON 命令能用。
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
别忘记重新加载 bash 配置文件 source ~/.bashrc
然后你需要用 mkvirtualenv xxx -p python3 #注意后面要跟上 -p python3,
来创建一个叫xxx 的python 3虚拟环境
workon xxx #切换到你的虚拟环境
3. .sh文件:
脚本文件,一般都是bash脚本。想运行的话就用sh命令运行 sh xxx.sh,.sh为Linux的脚本文件,我们可以通过.sh执行一些命令,可以理解为windows的.bat批处理文件
4.点命令:.
命令和source是同一个命令,可以理解为source的缩写,简称点命令。
5.执行方式:
1). /test.sh
2)sh test.sh
3). test.sh
4)source test.sh
他们有何区别?
1)第一种方式,是在当前的shell执行脚本本身,也就是说把test.sh当成一个文件执行,这时候我们需要拥有test.sh的运行权限(x权限),而且当我们在执行此命令时,有2个新进程在运行,一个是test.sh,一个是sleep,如果我们在执行第一个sleep时按ctrl+c终止脚本,test.sh和sleep一起终止,并且第二个sleep不会执行,因为整个test.sh运行已经终止。
2)第二种方式,是新建一个shell执行test.sh脚本里面的命令,不需要执行权限,有读取权限(r权限)即可,在执行此命令时,有2个新进程在运行,一个是bash,一个是sleep,如果执行第一个sleep时按ctrl+c,bash被终止,结果和第一种方式一样,第二个sleep不会执行。
3)第三种方式,是在当前shell执行test.sh里面的命令,不需要执行权限,有读取权限(r权限)即可,在执行此命令时,只有一个新进程在运行,就是sleep,如果在执行第一个sleep时按ctrl+c终止,那么第二个sleep接着运行,直到脚本所有命令执行完。
4)第四种方式和第三种方式一致。
6.export 和 sourse
sourse在当前shell中执行,而.是调用了一个子shell
export命令用于将shell变量输出为环境变量,或者将shell函数输出为环境变量。
一般把环境变量写到bashrc中,因为这样 每次登陆的时候可以使用
7.关于 ~/.bashrc文件
7.1.加环境变量
假定想添加的环境变量路径为:/opt/my-tools/Android-sdk/tools
1 进入用户的根目录
cd $HOME 或 cd ~
2 然后打开.bashrc若不存在则新建.bashrc文件
vim .bashrc(新建文件)
3 在.bashrc页面最后加上想要加的路径
export PATH=$PATH:/opt/my-tools/android-sdk/tools
4 最后执行
source ~/.bashrc
7.2.说明
1.Linux系统默认使用的shell为bash,在shell启动的时候会读取根据情况读取.bash_profile和.bashrc文件。
准确的说,当shell是交互式登录shell时,读取.bash_profile文件,如在系统启动、远程登录或使用su -切换用户时;当shell是交互式登录和非登录shell时都会读取.bashrc文件,如:在图形界面中打开新终端或使用su切换用户时,均属于非登录shell的情况。
简单的说,.bash_profile只在会话开始时被读取一次,而.bashrc则每次打开新的终端时,都会被读取。
2.~/.bash_profile 是交互式、login 方式进入 bash 运行的~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。所以一般优先把变量设置在.bashrc里面。比如在crontab里面执行一个命令,.bashrc设置的环境变量会生效,而.bash_profile不会。
3.配置文件有两个级别, 系统级(/etc)和用户级(~/), 每次调用优先调用系统级, profile用于登录式shell, 而bashrc用于每个交互式shell
4.当shell脚本具有可执行权限时,用sh filename与./filename执行脚本是没有区别得。./filename是因为当前目录没有在PATH中,所有”.”是用来表示当前目录的。sh filename 重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell,除非使用export。
source filename:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。
7.3.创建虚拟环境
第一步就是打开 ~/.bashrc文件 然后在最后写入。把下面几行加入:
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7 # 这句是为了防止环境变量$PATH中已有其它环境的python
export WORKON_HOME=$HOME/.virtualenvs # 放所有虚拟环境的地方
source /usr/local/bin/virtualenvwrapper.sh #激活virtualenvwrapper
最后执行source ~/.bashrc