热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linuxpip3使用清华源_CentOS上安装Python3及pip3,代码的版本升级,安装sqlite3,MongoDB安装...

前言:我目前使用的服务器为centos7.x系统自带的python的版本为2.7.x,但是目前无论是学习还是使用python,python

前言:

  我目前使用的服务器为centos7.x 系统自带的python的版本为2.7.x,但是目前无论是学习还是使用python,python3都是首选,那么问题来了。---如何安装python3环境,又如何给python3安装对应的pip3呢? 更关键的是我们原来的系统中还有一些自带的工具需要用到python2.7版本,所以要求的是python3 and python2 共存,pip2 and pip3共存。下面文章就是我的亲自实践。(给 python3 安装 pip3)

  写这篇的目的就是为了帮助也遇到同样问题的同志(目前网上的资料不好找,大都没有经过实践,下面是我的经历,百分百能够成功!! go !!go!!)

一。先安装python3

安装python3.x 这里不多赘述,so easzy!!

1. 先到官方网站下载python3的安装包

https://www.python.org/downloads/source/ ---我下载的是Python-3.7.1.tgz

2、解压:

tar -zxvf Python-3.7.1.tgz

3.编译安装

!!!!注意 注意 ⚠️ 在编译之前需要安装一些必须的依赖,否则当报错的时候还得重新编译 ---(我就是吃了这个亏,千万要注意奥。。。)

安装必要依赖(至少需要如下三个,我个人就遇到如下三个)

yum install openssl-devel -yyum install zlib-devel -yyum install libffi-devel -y

好了现在可以安心的编译咯:

cd Python-3.7.1
./configure --prefix=/opt/Python371 #安装目录可以自己定义无所谓。
make
make install

编译完成后会在如 /opt/下生成Python371的文件夹 ,没错这就是编译完成的python --为了方便操作可以自己定义一个软连接如下:

ln -s /opt/Python371/bin/python3 /usr/bin/python3

这样就可以直接使用python3了,同时pip3也安装好了

0c11d6ccdb4e4dfd239c7304dc379d4d.png

现在就可以用pip3给python3安装各种包了

如果使用老版本的Python,要安装pip3就参考这篇文章:

http://www.cnblogs.com/wenchengxiaopenyou/p/5709218.html

代码的版本升级:

可以利用Python内置工具2to3.py,帮你自动将Python2的代码转换为Python3的代码的。这个脚本的位置位在Python安装的根目录Python27ToolsScripts2to3.py。
比如我手上有个Python 2.x的python脚本:D:tmptransform.py
可以通过打开命令提示符,定位至该要转换的脚本目录下,然后运行 python 2to3.py -w transform.py
如果上述不加-w参数,则默认只是把转换过程所对应的diff内容打印输出到当前窗口而已。加了-w,就是把改动内容,写回到原先的文件了。

二 在CentOS7上安装sqlite3

下载软件:

wget https://www.sqlite.org/2019/sqlite-autoconf-3270100.tar.gz

解压

tar zxvf sqlite-autoconf-3270100.tar.gz

cd sqlite-autoconf-3270100/

编译及安装

./configure -prefix=/opt/sqlite3

make && make install

成功安装,最后输出如下信息:

----------------------------------------------------------------------
Libraries have been installed in:/opt/sqlite3/libIf you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the '-LLIBDIR'
flag during linking and do at least one of the following:- add LIBDIR to the 'LD_LIBRARY_PATH' environment variableduring execution- add LIBDIR to the 'LD_RUN_PATH' environment variableduring linking- use the '-Wl,-rpath -Wl,LIBDIR' linker flag- have your system administrator add LIBDIR to '/etc/ld.so.conf'See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

信息显示sqlite3的安装路径是:/opt/sqlite3/lib

特别注意建议添加sqlite3环境变量:

add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution

添加环境变量:export LD_LIBRARY_PATH=/opt/sqlite3

验证是否能正常运行:

/opt/sqlite3/bin/sqlite3

执行上面命令,正常运行输出下面信息:

SQLite version 3.27.1 2019-02-08 13:17:39
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> 输入命令.quit退出sqlite3
sqlite> .quit

接下重新编译安装Python3

首先修改python3源码的setup.py文件的下面部分,找到sqlite_inc_paths进行修改,如下所示:

sqlite_inc_paths = [ '/usr/include','/opt/sqlite3/include', # 添加这一行'/usr/include/sqlite','/usr/include/sqlite3','/usr/local/include','/usr/local/include/sqlite','/usr/local/include/sqlite3',]

接下进入源目录重新编译python:

make

make install

验证安装是否成功:

python3

import sqlite3

未报错则表示安装成功

三 MongoDB的源码包安装及启动

1 下载MongoDB源码包:
wget https://www.mongodb.com/download-center/community2 解压源码包:
tar zxvf mongodb-linux-x86_64-rhel70-4.0.6.tgz
cd mongodb-linux-x86_64-rhel70-4.0.6/3 在/opt目录下创建mongoDB文件夹
mkdir /opt/mongoDB
移动前面解压的文件到/opt/mongoDB目录下,并且重命名为mongodbserver:
mv mongodb-linux-x86_64-rhel70-4.0.6 /opt/mongoDB/
cd /opt/mongoDB
mv mongodb-linux-x86_64-rhel70-4.0.6 mongodbserver4 在mongodbserver目录下创建日志文件夹和数据库文件夹
cd mongodbserver/
mkdir log
mkdir data5 创建配置文件夹和配置文件
在/opt/mongoDB/mongodbserver目录下创建配置文件夹:
mkdir etc
创建配置文件mongodb.conf:
cd /opt/mongoDB/mongodbserver/etc
vim mongodb.conf # 输入如下内容

dbpath=/opt/mongoDB/mongodbserver/data
logpath=/opt/mongoDB/mongodbserver/log/mongodb.log
port=27017
fork=true
journal=false
storageEngine=mmapv1

6 启动MongoDB
第一次启动不需密码,也没有任何用户,通过shell命令可直接进入,进入到mongodbserver上当下的bin目录,执行./mongo即可,如下所示:
cd /opt/mongoDB/mongodbserver/bin
./mongod --config /opt/mongoDB/mongodbserver/etc/mongodb.conf
启动后,有如下信息所示:
about to fork child process, waiting until server is ready for connections.
forked process: 4382
child process started successfully, parent exiting
此时访问http://npfdev1:27017/ , 可以在页面上看到:
It looks like you are trying to access ...等信息7 添加管理用户
利用mongo命令连接mongoDB服务端,注意mongoDB没有root用户,只有能管理用户的用户userAdminAnyDatabase:
cd /opt/mongoDB/mongodbserver/bin/
./mongo
启动成功大致出现如下的提示信息:

MongoDB shell version v4.0.6
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("4031a60a-158e-4d73-963b-c411961040ec") }
MongoDB server version: 4.0.6
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, seehttp://docs.mongodb.org/
Questions? Try the support grouphttp://groups.google.com/group/mongodb-user
Server has startup warnings:
2019-02-22T09:38:33.826+0800 I STORAGE [initandlisten]
...
>
# 添加用户
> use admin
switched to db admin
> db.createUser({user:"michael",pwd:"michael123",roles:[{role:"userAdminAnyDatabase",db:"admin"}]});
# 添加成功后会看到下面的输出信息:
Successfully added user: {"user" : "michael","roles" : [{"role" : "userAdminAnyDatabase","db" : "admin"}]
}
>

此时可用show users或db.system.users.find()查看已有用户
show users;
db.system.users.find();

添加完管理用户后,使用权限方式再次开启MongoDB,不要用kill直接杀掉mongodb进程。如果杀掉了进程,到data目录下删除mongo.lock文件。可使用db.shutdownServer()关闭。先退出及关闭MongoDB:
> db.shutdownServer();
> exit;
#./mongod --shutdown

8 使用权限方式启动MongoDB
在配置文件中添加:auth=true,然后启动:
cd /opt/mongoDB/mongodbserver/bin
./mongod --config /opt/mongoDB/mongodbserver/etc/mongodb.conf
进入mongo shell使用admin数据库验证,如果不验证,不能做任何操作:./mongo # 进入mongo shell> use admin;
switched to db admin
> db.auth("michael","michael123"); # 认证,返回1表示成功
1
>9 将MongoDB下的可执行文件bin目录添加到系统路径中
修改/etc/profile文件添加MongoDB下的bin文件路径vim /etc/profile # 在末尾的PATH变量后面添加下面命令
export PATH=...:/opt/mongoDB/mongodbserver/bin
执行source /etc/profile,使系统环境变量立即生效
此时可测试直接执行mongo命令是否能成功:mongo # 连接成功,输出下面信息

MongoDB shell version v4.0.6
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("70a91e71-a651-4fa1-ac79-d91c51124232") }
MongoDB server version: 4.0.6
>
# 切换用户
> use admin;
switched to db admin
> db.auth("michael","michael123")
1
> db.shutdownServer()
2019-02-22T10:59:29.846+0800 E QUERY [js] Error: shutdownServer failed: {"ok" : 0,"errmsg" : "not authorized on admin to execute command { shutdown: 1.0, lsid: { id: UUID("70a91e71-a651-4fa1-ac79-d91c51124232") }, $db: "admin" }","code" : 13,"codeName" : "Unauthorized"
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.shutdownServer@src/mongo/shell/db.js:453:1
@(shell):1:1

在执行关闭命令有提示:shutdownServer failed,执行下面命令添加权限,解决问题:

db.updateUser("michael",{roles : [{"role" : "userAdminAnyDatabase","db" : "admin"},{"role" : "dbOwner","db" : "admin"},{"role" : "clusterAdmin", "db": "admin"}]})
# 此时执行命令:db.shutdownServer()
> db.shutdownServer()
server should be down...
2019-02-22T11:08:02.600+0800 I NETWORK [js] trying reconnect to 127.0.0.1:27017 failed
2019-02-22T11:08:02.601+0800 I NETWORK [js] reconnect 127.0.0.1:27017 failed failed
>
mongod --shutdown # 退出主程序

10 将MongoDB设置为系统服务并且设置开机启动
首先添加MongoDB为系统服务,执行下面的命令:
vim /etc/rc.d/init.d/mongod # 添加下面的内容

start(){
/opt/mongoDB/mongodbserver/bin/mongod --config /opt/mongoDB/mongodbserver/etc/mongodb.conf
}stop(){
/opt/mongoDB/mongodbserver/bin/mongod --config /opt/mongoDB/mongodbserver/etc/mongodb.conf --shutdown
}case "$1" instart)start;;stop)stop;;restart)stopstart;;*)echo
$"Usage: $0 {start|stop|restart}"exit 1
esac

保存完成后,添加执行权限:chmod +x /etc/rc.d/init.d/mongod
测试启动是否成功:
# service mongod start
about to fork child process, waiting until server is ready for connections.
forked process: 7292
child process started successfully, parent exiting
关闭MongoDB服务:service mongod stop
重启MongoDB服务:service mongod restart
验证是否启动成功:lsof -i :27017 # 输出下面信息,启动成功

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mongod 7395 root 11u IPv4 84018 0t0 TCP localhost:27017 (LISTEN)

Python操作MongoDB的库下载连接:

https://pypi.python.org/pypi/pymongo



推荐阅读
  • 技术分享:如何在没有公钥的情况下实现JWT密钥滥用
      ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • linux下编译安装lnmp
    2019独角兽企业重金招聘Python工程师标准#######################安装依赖#####################安装必要的包:y ... [详细]
  • linux clickhouse安装在指定目录_Centos8服务器指定目录安装配置Nginx
    1.安装前准备(1)检查是否安装过nginx(如果没有安装过可以无视)find-namenginx搜索nginx文件及其文件夹rm-rf【nginx配置地址文件及其文件夹】手动删除 ... [详细]
  • phpstudy云服务器安装,如何安装phpstudy
    本文目录一览:1、phpstudy安装在哪本地电脑还是服务器? ... [详细]
  • 删除iPad或iPhone目录privatevarkeychainskeychain-2.db文件,重启iPad或iPhone。1.如何卸载机内自带软件? ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 人工智能推理能力与假设检验
    最近Google的Deepmind开始研究如何让AI做数学题。这个问题的提出非常有启发,逻辑推理,发现新知识的能力应该是强人工智能出现自我意识之前最需要发展的能力。深度学习目前可以 ... [详细]
  • Git 第二章 Git 安装和卸载
    1.Git安装1.1软件下载打开[git官网]https:git-scm.com,下载git对应操作系统的版本。所有东西下载慢的话就可以去找镜像!官网 ... [详细]
  • Centos 6/7安装Python 3.5及SSL编译安装,实现HTTPS识别
    Python3中无法导入ssl模块的解决办法如果你发现在python3脚本运行过程中发现涉及到ssl模块都无法运行的情况下。那么需要进行如下步骤第一步:yuminst ... [详细]
author-avatar
mobiledu2502934191
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有