ubuntu18.04----Python环境配置与虚拟环境,解决常见错误问题 Python.h: 没有那个文件或目录 无法定位软件包的问题解决

Python.h: 没有那个文件或目录
解决方法是安装python-dev,这是Python的头文件和静态库包:
sudo apt-get install python-dev
sudo apt-get install python3-dev

 

 先说下环境  虚拟机Ubuntu16.04   系统默认Python 2.7.12 ,系统还自带3.5版本的,后来自己又装了3.6版本。
在系统安装过程中,总是报错,因为是源码安装的,所以系统要进行编译,但是找不到python.h文件!!!
sudo apt install python3.6-dev

虚拟环境安装后创建时报错解决方案:sudo apt-get install aptitude


无法定位软件包的问题解决:
打开ubuntu的终端,在终端中运行以下的命令:
sudo apt-get update
更新一些软件源。

 

Python pip 安装与使用
判断是否已安装:pip --version, pip3 --version
apt install python-pip
apt install python3-pip
安装:
 $ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py   # 下载安装脚本
 $ sudo python get-pip.py    # 运行安装脚本
注意:用哪个版本的 Python 运行安装脚本,pip 就被关联到哪个版本,如果是 Python3 则执行以下命令:
 $ sudo python3 get-pip.py    # 运行安装脚本。
pip 最常用命令
 显示版本和路径:pip --version
 获取帮助:pip --help
 安装包 如Django: pip install Django==1.7
 升级包:pip install --upgrade SomePackage
  补充:升级指定的包,通过使用==, >=, <=, >, < 来指定一个版本号。
 卸载包:pip uninstall SomePackage
 搜索包:pip search SomePackage
 显示安装包信息:pip show
 查看指定包的详细信息:pip show -f SomePackage
 查看已安装:pip list
 检查升级:pip list -o
注意:关于PIP安装软件包报error code 1 错误的原因与对策
 作者在冬日降临的博客找到了出现这个错误的原因,那就是pip(python 3.5)不能正确安装python2.7 的API。
 解决办法是安装pip(python2.7)。 来源:https://blog.csdn.net/m_hook/article/details/78350717
 分别使用python和python3进行安装,安装成功后,在用pip工具安装程序时,可根据要安装目标的版本,选择   pip2 xxx 和 pip3 xxx 进行安装。

 

虚拟环境的安装
错误解决方案:sudo apt-get install aptitude
#使用pip方式进行虚拟环境的安装,pip默认使用的是python2.7环境,
 可以使用pip3,此时python环境使用的是python3,使用pip3会出现下面注意中的报错,需要再进行相
sudo pip install virtualenvwrapper
# 创建虚拟环境
mkvirtualenv 虚拟环境名称
 补充:  创建的虚拟环境都保存在/home/.virtualenvs目录下,可以进入这个目录查看;
  创建成功后会自动进入该虚拟环境,命令行提示改变;
指定python版本创建虚拟环境,我们使用python3
mkvirtualenv -p python3(或python路径) 虚拟环境名称
 whereis python3可以查看python3的路径
细节:不需要进入到/home/.virtualenvs目录,在任何目录下都可以执行命令,创建的虚拟环境的位置都一样。
      创建虚拟环境是需要在联网下进行,否则创建失败。
注意:使用mkvirtualenv创建虚拟环境,可能提示找不到命令,一般是脚本文件没有加入系统路径,
 还有一种报错:/usr/bin/python: No module named virtualenvwrapper,
 错误原因:Ubuntu安装了2.7和3.x两个版本的python,
  在安装时使用的是sudo pip3 install virtualenvwrapper,
  在我运行的时候默认使用的是python2.x,但在python2.x中不存在对应的模块
# 解决方案:
#1、打开~/.bashrc文件,并添加如下:   在文件管理器中:ctrl+H可以查看当前路径下的所有文件,包括隐藏文件
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3   
 #更改默认使用的python的版本,设置为python3,用于解决前面使用pip3安装虚拟环境的遗留问题
source /usr/local/bin/virtualenvwrapper.sh 
 #这个解决创建时提示找不到命令mkvirtualenv,需要添加绝对路径,通过下面一条指令可以查看:
 #找到virtualenvwrapper的脚本文件,whereis virtualenvwrapper 
# 2、执行脚本,初始化bash环境
source ~/.bashrc

 

查看:pip freeze
查看安装的版本:virtualenv --version
进入:workon 虚拟环境名称
在虚拟环境下安装python包
 进入虚拟环境,在终端输入:pip install 包的名字
退出:deactivate
查看所有的虚拟环境:workon 连按两次Tab键
删除:rmvirtualenv 虚拟环境名称

 

安装flask-0.10.1的包
pip install flask==0.10.1

 


安装 Flask-Script 扩展 脚本启动
pip install flask-script

 

mysql数据库
安装mysql:sudo apt-get install mysql-server
启动和关闭mysql服务器:service mysql start   service mysql stop
进入:mysql -u root -p
发现MySQL的root用户的plugin被修改了,只有换成mysql_native_password才可以使用密码登录MySQL。
使用下面的命令更改plugin,同时设置MySQL的root访问密码
update mysql.user set authentication_string=PASSWORD('mysql'), plugin='mysql_native_password' where user='root';
flush privileges;

 

Flask-SQLAlchemy安装及设置
查看:mysql --version
安装:flask-sqlalchemy
pip install flask-sqlalchemy
pip install flask-mysqldb
如果连接的是 mysql 数据库,需要安装 mysqldb   无法安装时,使用pip  install  pymysql
注意:OSError: mysql_config not found错误:
 解决方案:sudo  apt-get install libmysqlclient-dev python3-dev

 

redis NoSQL安装:
step1:下载:wget http://download.redis.io/releases/redis-4.0.10.tar.gz
step2解压:tar xzf redis-4.0.9.tar.gz
step3:移动,mv放到希望安装的路径
step4:进⼊移动后的redis路径
step5:生成:sudo make
step6:测试:sudo make test
step7:安装:sudo make install
step8:查看:redis-server --version

 


虚拟环境的备份与导入:
x虚拟环境希望使用到y虚拟环境中所安装的所有的包
来源:https://blog.csdn.net/james_nan/article/details/78808382
步骤:将安装在x虚拟环境中的包导入到一个文件中去,如果在home目录中执行的操作,就到home中找这个文件
pip freeze > output.txt
在y虚拟环境中找到这个文件,并进行安装
pip install -r output.txt
等待安装,并检查y虚拟环境中是否已成功安装工具包
pip freeze
---------------------

参考链接


http://www.runoob.com/w3cnote/python-pip-install-usage.html
https://www.cnblogs.com/cwp-bg/p/7701231.html
https://blog.csdn.net/u012383914/article/details/85009449
https://www.cnblogs.com/wangchunniu1314/p/6339416.html
https://www.cnblogs.com/lijiageng/p/6710375.html
https://blog.csdn.net/weixin_40612082/article/details/83688750

https://www.cnblogs.com/jycjy/p/6940544.html

 

linux命令中which、whereis、locate有什么区别?

1.find
  find是最常用和最强大的查找命令。它能做到实时查找,精确查找,但速度慢。
  find的使用格式如下:
  #find [指定目录] [指定条件] [指定动作]
  指定目录:是指所要搜索的目录和其子目录。如果不指定,则默认为当前目录。
  指定条件:是指所要搜索的文件的特点。
  指定动作:是指对搜索的结果如何处理。
  常见选项:
  -name  根据文件名称查找(严格区分大小写,如果文件名中间有空格,则必须把文件名用双引号引起来)
  -iname  根据文件名查找(不区分大小写)
  -regex "PATTERN" 正则表达式匹配
  -user  根据文件属主进行查找
  -group  根据文件属组进行查找
  -uid  根据文件的uid查找
  -gid   根据用户的gid查找
  -nouser  查看所有的没有属主的文件
  -nogroup   查看所有的没有属组的文件
  例:查看tmp目录下,文件属主为redhat的文件
  #ls -l `find /tmp -user redhat`

 

 2.locate
  locate命令不是实时查找,所以查找的结果不精确,但查找速度很快。因为它查找的不是目录,而是一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
  locate使用格式
  locate [指定目录]
  例:查找所有包含passwd的文件
  #locate passwd
  例:查找所有包含passwd的文件,并且只显示前十个
  #locate -n 10 passwd

 

 3.which
  which命令是查找命令是否存在,以及命令的存放位置在哪儿。
  例:#which ls

 

 4.whereis
  whereis命令只能用于搜索程序名,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
  whereis命令的使用实例:
  #whereis vim
  
 5.type
  type命令用来区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的。如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,相当于which命令。
  
  #type cd
  系统会提示,cd是shell的自带命令(build-in)。
  
  #type grep
  系统会提示,grep是一个外部命令,并显示该命令的路径。
  
  #type -p vim
  加上-p参数后,就相当于which命令

 


./configure是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本。
make是用来编译的,它从Makefile中读取指令,然后编译。
make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。

 

AUTOMAKE和AUTOCONF是非常有用的用来发布C程序的东西。

 

-----
1、configure,这一步一般用来生成 Makefile,为下一步的编译做准备,你可以通过在 configure 后加上参数来对安装进行控制,比如代码:./configure –prefix=/usr 意思是将该软件安装在 /usr 下面,执行文件就会安装在 /usr/bin (而不是默认的 /usr/local/bin),资源文件就会安装在 /usr/share(而不是默认的/usr/local/share)。同时一些软件的配置文件你可以通过指定 –sys-config= 参数进行设定。有一些软件还可以加上 –with、–enable、–without、–disable 等等参数对编译加以控制,你可以通过允许 ./configure –help 察看详细的说明帮助。

 

2、make,这一步就是编译,大多数的源代码包都经过这一步进行编译(当然有些perl或python编写的软件需要调用perl或python来进行编译)。如果 在 make 过程中出现 error ,你就要记下错误代码(注意不仅仅是最后一行),然后你可以向开发者提交 bugreport(一般在 INSTALL 里有提交地址),或者你的系统少了一些依赖库等,这些需要自己仔细研究错误代码。

 

3、make insatll,这条命令来进行安装(当然有些软件需要先运行 make check 或 make test 来进行一些测试),这一步一般需要你有 root 权限(因为要向系统写入文件)。

 

-----
Linux的用户可能知道,在Linux下安装一个应用程序时,一般先运行脚本configure,然后用make来编译源程序,在运行make install,最后运行make clean删除一些临时文件。使用上述三个自动工具,就可以生成configure脚本。运行configure脚本,就可以生成Makefile文件,然后就可以运行make、make install和make clean。

 

configure是一个shell脚本,它可以自动设定源程序以符合各种不同平台上Unix系统的特性,并且根据系统叁数及环境产生合适的Makefile文件或是C的头文件(header file),让源程序可以很方便地在这些不同的平台上被编译连接。

 

这时,就可运行configure脚本了,运行configure脚本,就可产生出符合GNU规范的Makefile文件了:
$ ./configure

 

到此时,就可以运行make进行编译,在运行make install进行安装了,最后运行make clean删除临时文件。
$ make
$ make install           (注:运行这个要有足够的权限)
$ make clean

 

利用configure所产生的Makefile文件有几个预设的目标可供使用,其中几个重要的简述如下:

 

make all:产生我们设定的目标,即此范例中的可执行文件。只打make也可以,此时会开始编译原始码,然后连结,并且产生可执行文件。

 

make clean:清除编译产生的可执行文件及目标文件(object file,*.o)。

 

make distclean:除了清除可执行文件和目标文件外,把configure所产生的Makefile也清除掉。

 

make install:将程序安装至系统中。如果原始码编译无误,且执行结果正确,便可以把程序安装至系统预设的可执行文件存放路径。如果用bin_PROGRAMS宏的话,程序会被安装至/usr/local/bin这个目录。

 

make dist:将程序和相关的档案包装成一个压缩文件以供发布。执行完在目录下会产生一个以PACKAGE-VERSION.tar.gz为名称的文件。 PACKAGE和VERSION这两个变数是根据configure.in文件中AM_INIT_AUTOMAKE(PACKAGE,VERSION)的定义。在此范例中会产生test-1.0.tar.gz的档案。

 

make distcheck:和make dist类似,但是加入检查包装后的压缩文件是否正常。这个目标除了把程序和相关文件包装成tar.gz文件外,还会自动把
这个压缩文件解开,执行 configure,并且进行make all 的动作,确认编译无误后,会显示这个tar.gz文件可供发布了。这个检查非常有用,检查过关的包,基本上可以给任何一个具备GNU开发环境-的人去重新编译。

 


apt-get常用命令
一,什么的是apt-get

 

高级包装工具(英语:Advanced Packaging Tools,简称:APT)是Debian及其衍生发行版(如:ubuntu)的软件包管理器。APT可以自动下载,配置,安装二进制或者源代码格式的软 件包,因此简化了 Unix系统上管理软件的过程,apt-get命令一般需要root权限执行,所以一般跟着sudo命令。

 

二,apt-get中文参数

 

用法:

 

apt-get [选项] 命令 apt-get [选项] install|remove pkg1 [pkg2 ...]

 

apt-get [选项] source pkg1 [pkg2 ...]

 

 

 

apt-get 是一个下载安装软件包的简单命令行接口。 最常用的命令是update(更新) 和install(安装)。

 

命令:

 

update - 重新获取软件包列表

 

upgrade - 进行更新

 

install - 安装新的软件包

 

remove - 移除软件包

 

autoremove - 自动移除全部不使用的软件包

 

purge - 移除软件包和配置文件

 

source - 下载源码档案

 

build-dep - 为源码包配置编译依赖

 

dist-upgrade - 发行版升级

 

dselect-upgrade - 依照 dselect 的选择更新

 

clean - 清除下载的归档文件

 

autoclean - 清除旧的的已下载的归档文件

 

check - 检验是否有损坏的依赖

 

选项:

 

-h 本帮助文件。

 

-q 输出到日志 - 无进展指示

 

-qq 不输出信息,错误除外

 

-d 仅下载 - 不安装或解压归档文件

 

-s 不实际安装。模拟执行命令

 

-y 假定对所有的询问选是,不提示

 

-f 尝试修正系统依赖损坏处

 

-m 如果归档无法定位,尝试继续

 

-u 同时显示更新软件包的列表

 

-b 获取源码包后编译 -V 显示详细的版本号

 

-c=? 阅读此配置文件

 

-o=? 设置自定的配置选项,如 -o dir::cache=/tmp

 

三,apt-get 常用实例

apt-cache search packagename 搜索包
apt-cache show packagename 获取包的相关信息,如说明、大小、版本等
apt-get install packagename 安装包
apt-get install packagename --reinstall 重新安装包
apt-get -f install 修复安装”-f = –fix-missing”
apt-get remove packagename 删除包
apt-get remove packagename --purge 删除包,包括删除配置文件等
apt-get update 更新源
apt-get upgrade 更新已安装的包
apt-get dist-upgrade 升级系统
apt-get dselect-upgrade 使用 dselect 升级
apt-cache depends packagename 了解使用依赖
apt-cache rdepends packagename 是查看该包被哪些包依赖
apt-get build-dep packagename 安装相关的编译环境
apt-get source packagename 下载该包的源代码
apt-get clean 清理无用的包
apt-get autoclean 清理无用的包
apt-get check 检查是否有损坏的依赖

你可能感兴趣的:(Linux---Ubuntu)