精华内容
下载资源
问答
  • 安装了Python2.XPython3.XPython2.X IDLE打不开,两个版本都卸载后重装仍然打不开,在网上找了几种办法,希望对大家能有所帮助 1、首先查看环境变量是否配置正确 配置方法网上有很多例子,这里就不细说了 这...

          安装了Python2.X和Python3.X后Python2.X IDLE打不开,两个版本都卸载后重装仍然打不开,在网上找了几种办法,希望对大家能有所帮助

     1、首先查看环境变量是否配置正确

    配置方法网上有很多例子,这里就不细说了

    这一步慎用,这一步解决不了问题建议除Path外的其他环境变量保持原样,我后面装高版本的python3时因为PYTHONPATH,TCL_LIBRARY,TK_LIBRARY这三个环境变量遇到了其他问题,这是查找python inport库时候的路径,高版本python3好像是不需要配置这个,会在安装路径下查找

     Path=C:\Python31
    
     PYTHONPATH= C:\Python31\Lib;C:\Python31\Lib\tkinter
    
     TCL_LIBRARY=C:\Python31\tcl\tcl8.5
    
     TK_LIBRARY=C:\Python31\tcl\tk8.5Path=C:\Python31C:\Python31\Lib;C:\Python31\Lib\tkinter
    
     TCL_LIBRARY=C:\Python31\tcl\tcl8.5
    
     TK_LIBRARY=C:\Python31\tcl\tk8.5Path=C:\Python31

     

    2、可能是两个版本配置不兼容造成

     进入C盘->用户目录->administrator(你的用户名)   找到.idlerc文件夹,或者是 Linux下 home/your name/.idlerc  里面的 config-main.cfg 和 config-extensions.cfg ,将其删除,再启动idle

     嗯~~很遗憾,我的本本没有这个文件夹,我们继续前行

     

     3、在命令行运行idle.py查看报错并分析

     win+R输入cmd打开命令行,

    输入C:\Python27\Lib\idlelib\idle.py

    3.1.1 在网上看到一种情况,提示是:

     

    Warning:unable to create user config directory C:\Users\bigfool\.idlerc

    Check path and permissions.

    Exiting!

    貌似是文件夹权限的问题

    3.1.2解决办法 :更改文件夹的权限

     

    文件夹上C:\User\你当前用户名     右键》属性》安全》高级

    我的里面有三个用户:

    其中两个是完全控制,erveryone用户是“读取和执行”权限。

    对erveryone用户添加权限:

    点击“添加”按钮,输入要选择的对象名称everyone,或者点“高级》立即搜索”找到erveryone。

    点击“确定”选“完全控制”权限

    再点击“确定”

    3.2.1 然而,我的并不是这样的,我的报错如下:

     File "C:\Python27\lib\lib-tk\Tkinter.py", line 80, in _stringify
        value = unicode(value, 'utf-8')

    UnicodeDecodeError: 'utf8' codec can't decode byte 0xd0 in position 0: invalid continuation byte

     

    3.2.2 解决办法,更改编码方式

     

    找到报错文件C:\Python27\Lib\lib-tk\Tkinter.py

    分析

    Windos默认gbk作为系统内部编码,而配置里的编码格式是utf-8,所以导致了错误

     

    修改
     
           将_stringify函数里的value = unicode(value, 'utf-8')修改为value = unicode(value, 'gbk')

     

    4、重新输入C:\Python27\Lib\idlelib\idle.py

    等待一段时间后成功弹出IDLE,返回桌面也能打开IDLE,

     

    大功告成!!!!

     

    参考 https://blog.csdn.net/huluputi/article/details/7583752

     

     

     

     

     

     

     

    展开全文
  • #python3.xpython2.x print的区别 input区别 #python3.x # print(x,y) #打印对象 # #python2.x # print x,y # #python3.x # print(x,y,end="") # #python2.x # print x,y, #echo "aa" >> 1.txt #python3....
    #python3.x 与python2.x print的区别  input区别
    #python3.x
    # print(x,y)   #打印对象
    # #python2.x
    # print x,y
    
    # #python3.x
    # print(x,y,end="")
    # #python2.x
    # print x,y,
    
    #echo "aa" >> 1.txt
    #python3.x   把内容追加到文件
    with open("1.py","a",encoding="utf-8") as f:
        print("11",file=f)
    
    #python2.x
    # with open("1.py","a",encoding="utf-8") as f:
    #     print >> f,"hhh"
    #
        
    #print  其实是调用了sys.stdout.write
    
    # In [9]: print("1")
    # 1
    #
    # In [10]: sys.stdout.write("1"+"\n")
    # 1
    #
    #这两行代码等价
    
    
    #python3.x  sep  #多个字符串用什么链接
    print("12","3")
    print("12","3",sep="+")
    
    
    #input()区别
    #python2.x
        #input()    自动识别输入的参数,并转换
        #raw_input()  #默认都是字符串类型
        
    #python3.x
    #raw_input()与input() 整合
    input()  #全部按字符串处理
    

     

    展开全文
  • 一般情况下,各类Linux操作系统是会默认安装Python2.x的,在最新的CentOS7.4版本中,发现系统默认只安装了Python2.x,而且是很多系统组件的依赖包,不推荐卸载。目前Python3.x逐渐流行,相信在不久的将来将取代...

    一般情况下,各类Linux操作系统是会默认安装Python2.x的,在最新的CentOS7.4版本中,发现系统默认只安装了Python2.x,而且是很多系统组件的依赖包,不推荐卸载。目前Python3.x逐渐流行,相信在不久的将来将取代Python2.x。如何在我们的系统内同时安装、使用Python2.x与Python3.x呢?
    由于Python2.x系统默认已经安装,所以我们只需要下载Python3.x版本进行设置、安装即可。
    下载Python3.x,下载地址可以去Python官网上寻找。
    [root@Geeklp-Python Python-3.6.3]# curl -O https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tar.xz
    解压已经下载完成的源码包:
    [root@Geeklp-Python Python-3.6.3]# tar -xvJf Python-3.6.3.tar.xz
    如果你的系统没有安装gcc的话,你还需要先完成gcc的安装:
    [root@Geeklp-Python Python-3.6.3]# yum -y install gcc
    把zlib(一般情况下zlib已经安装)及zlib-devel也安装上,免得之后编译、安装过程报错:
    [root@Geeklp-Python Python-3.6.3]# yum -y install zlib zlib-devel
    
    后来在使用pip时发现有报错:
    pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
    发现还需要安装openssl-devel,安装openssl-devel时,zlib-devel会作为依赖包被安装。所以安装了openssl-devel就不需要安装其他的了!
    直接安装openssl-devel:
    [root@Geeklp-Python Python-3.6.3]# yum -y install openssl-devel
    当前的工作目录为:/usr/local/share/Python-3.6.3,依次执行:
    [root@Geeklp-Python Python-3.6.3]# ./configure --prefix=/usr/local/share/applications/Python3.6.3
    [root@Geeklp-Python Python-3.6.3]# make&&make install

    从上图我们可以看到,本次安装同时还安装了pip(版本为9.0.1)
    新建软连接:
    [root@Geeklp-Python Python-3.6.3]# ln -s /usr/local/share/applications/Python3.6.3/bin/python3.6 /bin/python3
    [root@Geeklp-Python Python-3.6.3]# ln -s /usr/local/share/applications/Python3.6.3/bin/pip3 /bin/pip3
    输入python3,如果出现以下内容说明已经安装成功!

    一般情况下,不建议修改原来的python2.x的配置信息。写python2.x脚本时申明解释器时请使用:#!/bin/python。写python3.x脚本时申明解释器是请使用:#!/bin/python3,这样的话通过./即可运行python脚本,很方便。如果不申明解释器,则运行时分别使用python或python3,后面跟脚本的全名。使用pip的时候为了便于区分,键入pip3来以示区别。

    展开全文
  • Windows中Python3.x下运行Python2.x程序解决方案。问题描述与分解场景和适用范围思路与分解本文环境介绍使用pyinstaller打包python2.x下的Scrapy工程在python 3.x环境下调用exe文件 问题描述与分解 声明:本文实践...

    问题描述与分解

    声明:本文实践过程中主要参考博文为https://blog.csdn.net/la_vie_est_belle/article/details/79017358
    同时解决了部分上述博文方法在本人项目中无法应对的问题

    场景和适用范围

    部分库在Python 2.x和Python 3.x下,函数和代码写法有所不同。本文实验室项目希望搭建一个系统,该系统涉及爬虫,分析模型,可视化呈现等模块。其中爬虫先前用的是python 2.7结合Scrapy编写的,而后续由于需要用到tensorflow而使用了python 3.x。由于真的不想改代码,所以整合的时候就遇到了这样的问题,需要在一个环境下实现各部分的功能。

    思路与分解

    由于我们的爬虫并没有与分析模型和可视化功能模块有直接的数据交互,而是通过mongo数据库间接进行数据交互,因此爬虫模块相对独立,仅需能够正常向数据库写入抓取的数据即可,所以本人希望利用pyinstaller对爬虫模块进行打包,再在python 3.x环境下调用打包好的exe文件运行爬虫模块。所以步骤简单分解为:1、打包python 2.7下使用Scrapy编写的爬虫模块;2、在python 3.x环境下调用exe文件。(如果模块间有频繁数据交互的朋友,这篇文章可能不太适合你,但是可能可以为你提供一种思路,并借助其他工具如redis等建立数据交互的桥梁,其实我也不懂redis怎么用哈哈哈,好了这不是本文重点,如果情况相同就看下文具体操作)

    本文环境介绍

    本文开发和打包爬虫模块的环境是Anaconda下创建的python 2.7.13
    调用爬虫模块exe文件的环境是Anaconda下创建的python 3.5.3

    使用pyinstaller打包python2.x下的Scrapy工程

    首先在cmd中python 2.7.13环境下安装pyinstaller:

    pip install pyinstaller
    

    安装成功后同样在cmd中,将工作目录切换到Scrapy工程下:

    cd I:\Proj\exe_test\topic_crawler
    

    本人爬虫目录如下图所示:
    Scrapy项目结构图
    图中红线划去部分为与项目模块无关部分。其中Begin.py是项目的起点,也是打包目标。该程序的作用是启动爬虫。启动爬虫的方法有两种,一种是用scrapy中cmdline方法,另一种则是官方文档中给出的。相信很多人和我一样一开始都是使用cmdline的方法去启动一个爬虫,原因很简单,大部分Scrapy教程最开始都是以命令行的方式教学如何启动一个爬虫的。本文也不例外原本代码如下:

     from scrapy import cmdline
     
     commond_list = u"scrapy crawl load_user_location".split()
     cmdline.execute(commond_list)
    

    然而最终你会发现这种方法在打包后完全行不通。(具体报错信息忘了,反正解决不了)
    最后还是用了官方文档中启动爬虫的方法,参考文档:https://doc.scrapy.org/en/latest/topics/practices.html
    代码如下:

    from scrapy.crawler import CrawlerProcess
    from scrapy.utils.project import get_project_settings
    
    process = CrawlerProcess(get_project_settings())
    process.crawl('load_user_location')
    process.start()
    

    整体的项目路径为:I:\Proj\exe_test\topic_crawler\topic_crawler\spiders
    接下来开始打包,结合结构图和上述切换目录的cd操作确认所在目录正确后,在cmd下进行打包:

    (python2.7) I:\Proj\exe_test\topic_crawler> pyinstaller Begin.py
    

    很好。大功告成?这么容易?不。pyinstaller真的,真的,以为你只需要Begin.py是不是很傻。假如我们的项目只有单独一个文件,这样的做法确实可行,Begin.exe运行时不会因为缺少模块而报

    ImportError: No module named xxx
    

    这样的错误。然而对于项目而言,所需要的模块除了Begin.py中import的库外,还需要项目结构中所有相关的.py文件以及文件中import的库还有这些库中运行所需要调用的所有的模块才能够正常运行。因此在Begin.py中我们需要大量的import项目运行所需要的所有模块
    本文参考博文https://blog.csdn.net/la_vie_est_belle/article/details/79017358中博主导入的库,并删去博主项目需要的特定库,这里不再赘述真的是缺啥补啥。
    很好终于不会有缺”钙“的情况了。所以可以了?不。。。。。。。。。。。。。。。。
    不。。。。。。。。。。。不。。。。。。。。。
    给我来了个找不到爬虫的错误。

    KeyError:"Spider not found xxxxx"
    

    以为是爬虫没导入于是检查了下Begin.py已经有如下导入

    from topic_crawler.spiders import comment
    from topic_crawler.spiders import load_user_location
    

    然而还是没用。继续报错,参考了博文https://blog.csdn.net/lynnpaul/article/details/81030413
    文中作者也遇到了这样的问题。原文描述是:
    “以为到这里就完成了,结果提示:KeyError: ‘Spider not found:’ ,难道是爬虫名不对,重新确认一遍后,没有任何问题,没打包前运行是正常的。尝试了各种方法后发现问题了。
    Pyinstaller打包的时候,目录要进入到项目目录中去,不然打包后就容易出这个问题,即进入:Scrapy_Books。”
    于是尝试了下。Emmmm我想说大哥真的能行吗。我在每一层都试了一遍,还把源码在生成的目录每一层都放了一遍(就是把源码在每一层文件夹下都放了一份拷贝)。还是没有用,我都尝试过了。头跟我一样铁的可以多试几遍。真的没有用真的。满脑子都是再见小黄脸的表情。。冷静。思考了下本人认为import的文件应该都已经打包进了所生成的文件中,也就是说应该是不需要拷贝其他源码文件了。那为什么会找不到呢???于是本人从Scrapy的配置文件入手,注意到了配置文件settings.py中SPIDER_MODULES变量是个list,而默认list中只有spiders所在目录的路径,讲道理如果scrapy能够扫描该文件夹下所存在的所有spider就不会出现找不到爬虫的问题了,但为啥用list?可能还有别的爬虫文件夹?一个项目把不同爬虫还放在不同目录里好像有点变态啊?算了试试看把爬虫直接加进来。将原本settings.py中的代码
    在这里插入图片描述
    改为
    在这里插入图片描述
    然后再打包。嗯。好的你终于找到爬虫了(我的内心是如此的平静)。在cmd中任意python环境下均可以完美运行你的爬虫项目了(特别提示如果你有传参需求,应注意cmd传入的参数是以gbk编码的,项目中如有解码则需要修改解码方式)。到此为止,打包算是告一段落。

    在python 3.x环境下调用exe文件

    在cmd中任意python环境下均可以完美运行你的爬虫项目,妥妥的在python 3.x中使用python执行cmd命令不就完事了嘛。os.system(cmd),os.popen(cmd),还是subprocess.Popen()应该都可以的吧??经过尝试,前两种方法真的不会用,运行的结果连基本的settings.py中的配置都是错误的。于是尝试一步一步来首先利用python打开一个cmd窗口

    os.system("cmd/c start")
    

    结果发现。cmd窗口中路径前有当前python 3.x环境的路径

    (D:\Anaconda\envs\xxxxx) I:\>
    

    抱着尝试的心态在此情况下调用了Begin.exe果不其然真的不行啊。我不要前面这一串路径啊。可能是因为所在运行目录的问题导致运行找不到项目所需的所有内容。通过一番查找在博文https://blog.csdn.net/jtujtujtu/article/details/47949775中发现了所需要的内容。subprocess.Popen()中参数cwd能够设置子进程的当前目录因此对其进行设置,同时为了能够跟踪代码的执行情况,对参数creationflags进行了设置,设置为subprocess.CREATE_NEW_CONSOLE从而创建了新的cmd窗口并运行进程显示进程输出内容,调用代码如下

    import subprocess
    command = [r"I:\Proj\exe\topic_crawler\dist\Begin\Begin.exe"]
    subprocess.Popen(command, bufsize=0, executable=None,
                     stdin=None, stdout=None, stderr=None,
                     preexec_fn=None, close_fds=False, shell=False,
                     cwd=r"I:\Proj\exe\topic_crawler\dist\Begin",
                     env=None, universal_newlines=False,
                     startupinfo=None,
                     creationflags=subprocess.CREATE_NEW_CONSOLE)
    
    

    Done。有疑问请咨询QQ: 429062304

    展开全文
  • 在Windows下同时安装Python2.xPython3.x

    千次阅读 2017-10-08 20:09:59
    但是Python2.xPython3.x的区别还是很多的(以后我可能会写一篇文章列举一下Python2.xPython3.x的具体区别)。如果是刚开始学习Python的话,那么使用Python3.x更好,但是目前(2017年10月8日)很多服务(例如...
  • Python2.xPython3.x的版本区别

    千次阅读 2018-08-27 22:45:00
    Python 3.0在设计的时候没有考虑向...为了照顾现有程式,Python 2.6作为一个过渡版本,基本使用了Python 2.x的语法和库,同时考虑了向Python 3.0的迁移,允许使用部分Python 3.0的语法与函数。 目前不支援Python 3...
  • Python2.xPython3.x的主要区别

    千次阅读 2018-03-17 17:33:54
    python2.xpython3.x版本有很大的差异,除了依赖包的名称变化很大外,其主要差异总结如下: 1)print函数 Python3中,print函数的括号是必须的,Python2是可选的。 2)键盘读取输入方面 Python3只保留input()...
  • Windows下Python2.xPython3.x共存安装

    千次阅读 2017-02-14 11:24:49
    共存使用Python2.xPython3.x配置方法
  • Python2.xPython3.x的主要区别

    万次阅读 2018-08-15 20:41:30
    Python2.xPython3.x的主要区别 print函数 print 语法的变化可能是最广为人知的了,但是仍值得一提的是: Python 2 的 print 声明已经被 print() 函数取代了,这意味着我们必须包装我们想打印在小括号中的对象。 ...
  • 同时安装python3.xpython2.x时的版本切换方法
  • 问题:python2.xpython3.x之d.keys()返回类型的区别 TypeError: ‘dict_keys’ object does not support indexingtype(myTree) #dict#python2.x when d.keys() 返回list类型,可直接使用索引获取其元素 myTree....
  • 首先找到python2.xpython.exe文件,更名为python2.exe(也可另起其他名字), 对应地,python3.xpython.exe文件,更名为python3.exe(也可另起其他名字)。 在环境变量里的系统变量里添加python2.xpython3.x...
  • Python2.xPython3.x中dict.keys()的差异

    千次阅读 2017-12-05 11:15:51
    dict.keys() Python 中字典(Dictionary) , ...Python2.xPython3.x有所不同:在python2.x中,dict.keys()返回一个列表eg:dict={'name':'ming','age':20}dict.keys() Out[67]: ['name', 'age']在python3.x中,dict.
  • Python3.xPython2.x版本兼容问题

    万次阅读 2018-02-28 09:33:11
    Python3.xPython2.x版本兼容问题重组和重命名标准库为了一致性和使用起来更容易,Python的标准库在Python 3已经被重组了。所有的模块名现在符合Python代码的风格引导,PEP 8[1];并且一些模块被合并了。2to3包含的...
  • python 2.x python 3.x编码问题
  • tkinter的用法:tkinter用法Python Tkinter Grid布局管理器详解:Python Tkinter Grid布局管理器详解...导入方式: Python2.x: from Tkinter import * Python3.x: from tkinter import *二.打开文件框: P...
  • 这是在python 2.7 运行了python 3.0的代码,爆出下面的错误 import Tkinter.messagebox as msg ...在python 2.x调用Tkinter 中 messgebox的方式 import tkMessageBox as msg 在python 3.x 调用tkint...
  • 1.最近在使用Pycharm的时候,Pycharm弹窗提示我,大概意思是要兼容Python2.x和3.x不同版本兼容编程,当时没多想,结果各种报黄(error),如图1: 2.查询了下才知道问题所在,如下是解决办法: File--> Settings--&...
  • python3.Xpython2.X list(range)详解

    千次阅读 2018-09-05 09:40:58
    range函数为列表生成的常用函数,在python2.X中,我们经常用range(num)返回一个[0,num)的列表,然而在python3中返回的不再是一个list而是一个range对象,我们看以下例子: list2=range(5) list2 Out[95]: range(0...
  • range 作为字典(dict)的 key注意字典,无论是 Python 2.x 还是 Python 3.x 都要求它的 key 类型是可哈希的(hashable),>>> d = {} >>> d[[1, 2]] = 'good' TypeError: unhashable type: 'list' (1)range 在 ...
  • Homebrew 是macOS 缺少套件的管理工具,能快速方便安装各类软件和环境,我们用它来实现Python2.xPython3的版本共存。 brew安装 打开Mac终端输入: /usr/bin/ruby -e "$(curl -fsSL ...
  • 一般而言,新的 centos 7.x 中自带的 python 都是 2.x 的版本。对于我们运行 python 软件支持并不友好,所以需要进行升级操作 下载 python3 的包之前,要先安装相关的依赖包,用于下载编译 python3: yum install ...
  • python2.xpython3.x中raw_input( )和input( )区别

    万次阅读 多人点赞 2016-05-11 22:39:16
    1、在python2.x中raw_input( )和input( ),两个函数都存在,其中区别为 raw_input( )---将所有输入作为字符串看待,返回字符串类型 input( )-----只能接收“数字”的输入,在对待纯数字输入时具有自己的特性...
  • 笔者在实际工作开发中需要经常在Python2.x和3.x版本间来回切换,于是总结下如何在Windows电脑上安装Python2.xPython3.x,并配置优先级以及如何快速切换。 一、官网下载Python安装包 官网地址:...
  • python 2.xpython 3.x的print区别

    千次阅读 2018-08-03 10:32:07
    2.X: print “The answer is”, 2*2 3.X: print(“The answer is”, 2*2) 2 2.X: print x, # 使用逗号结尾禁止换行 3.X: print(x, end=” “) # 使用空格代替换行 3 2.X: print # 输出新行 3.X: print() # 输出...
  • Mac安装python2.xpython3.x

    千次阅读 2017-02-24 10:52:33
    Mac默认的安装版本是2.7.X,但是未来的趋势将会是python3,由于MacOS依赖2.7的python,所以不能改动默认的python版本。 安装Python建议采用homebrew: brew install python3 安装好后采用终端运行: ...
  • python2.xpython3.x不一样的地方

    千次阅读 2019-11-25 23:36:20
    True和False在Python2中是两个全局变量,数值上对应1和0,既然是变量就可以被赋值,但这样容易造成混乱;故在Python3中 True和False变为两个关键字,永远指向两个固定对象,不允许被重新赋值。 python2中: >>...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,558,232
精华内容 623,292
关键字:

python2.x

python 订阅