标签归档 python

通过seo圣人

Pymssql安装失败的解决方法

因为项目需求,需要使用python操作sqlserver数据库,那么第一步肯定是要安装mssql模块啦,于是乎输入了下面的命令:

pip install mssql

结果出现了一大堆的报错:

出现这样的问题是谁都不想看到了,没有办法,我只有去mssql模块的官方网站去看看:

http://www.pymssql.org/

官网可以正常打开,点击“download”看看下载,结果这里出了问题,开始以为是墙的问题,于是用梯子访问,依然是打不开,现在只能想别的办法了。

去谷歌上乱搜一通,结果发现加利福尼亚大学有下载,于是,找到了下面的地址:

https://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql

因为我的环境是python3.83版本64位的,因此,我选择了pymssql‑2.1.4‑cp38‑cp38‑win_amd64.whl这个。下载之后,执行下面的命令开始安装:

pip install g:\iso\python\pymssql-2.1.4-cp38-cp38-win_amd
64.whl

出现下面的提示就是安装成功:

最后在python环境下输入下面的指令导入mssql模块,如果没有出现错误提示,说明mssql模块安装成功了。整个安装到这里就结束了:

import mssql

通过seo圣人

python+pycharm+pyqt的配置

网上很多帖子写的是python+pycharm+pyqt老版本的安装配置教程,因此,我觉得有必要在这里介绍一下。python环境:python3.6、pyqt为最新版本、pycharm为2020年最新版本,教育版,下面讲下在pycharm上面配置pyqt。
第一步:启动pycharm,点File,找到“setting”,然后在这个菜单下面找到“Exteral Tools”,如下图所示:

   

然后在External Tools点加号,如下图所示:

   

首先添加qtdesisgner,参数设置如下 :

#参数设置如下:
Name填写:Qt Designer

Programs填写:D:\python3.6\Lib\site-packages\pyqt5_tools\designer.exe
注意:这里需要填写你的实际路径。

Working directory填写:$FileDir$

 

然后添加PyUIC参数设置如下:

Name填写:PyUIC

Programs填写:D:\python3.6\python.exe
#请根据你的实际路径填写

Parameters填写:-m PyQt5.uic.pyuic  $FileName$ -o $FileNameWithoutExtension$.py

Working directory填写: E:\workspace_python\two\gui# Set the directory where the ui file is located

 

最后添加PyRCC,参数设置如下:

name填写:PyRcc
PROGRAM填写:G:\Program Files\Python36\Scripts\pyrcc5.exe

Arguments填写:$FileName$ -o $FileNameWithoutExtension$_rc.py

Working diecotry填写:$FileDir$ 


 

至此,整个python+pycharm的配置就完成了。
配置完成之后,我们用designer设计的GUI就可以使用pycharm进行转换了,请看下图:

 

通过seo圣人

Python配置Pyqt5开发环境

Pyqt5是基于python能够快速开发windows等GUI的一款软件,他提供了大量的控件,从而让我们实现快速开发,那么今天我就为大家介绍一下在windows安装配置pyqt5开发环境。

前提是你的windows系统已经安装好了python环境。

第一步:安装配置pyqt5,在dos下输入下面的命令:

pip install PyQt5

第二步:安装配置pyqt5-tools,在DOS命令提示符下输入:

pip3 install PyQt5-tools -i https://pypi.douban.com/simple

至此,pyqt5的安装配置就结束了,这时候你进入python的安装目录下的Lib\site-packages\pyqt5_tools\Qt\bin,找到designer.exe打开,如下图所示:

通过seo圣人

python编译windows下可执行的exe文件

python编译windows下可执行的exe文件的操作流程:

1、在安装python环境的windows下,安装 pyinstaller,请在dos下执行如下命令:

pip install pyinstaller

2、准备好程序代码,以下是我要准备编译的一个计时器程序:

import time
import tkinter as tk
from tkinter import messagebox


def main():
    window1 = tk.Tk()
    window1.title('计时器【v0.0】')
    window1.geometry('300x200')

    l1 = tk.Label(window1, text='当前时间:', font=('宋体', 15))
    l1.place(x=5, y=10)

    def time_now():
        global seconds_now
        seconds_now = time.time()
        lt = time.localtime(seconds_now)
        time1 = []
        time2 = '%04d年%02d月%02d日    \n    %02d时%02d分%02d秒' % (lt[0], lt[1], lt[2], lt[3], lt[4], lt[5])

        if time2 != time1:
            time1 = time2
            l1_2 = tk.Label(window1, text=time1, font=('宋体', 20))
            l1_2.configure(text=time2)
            l1_2.place(x=30, y=50)
            l1_2.after(200, time_now)

    time_now()

    def input_time():
        window2 = tk.Tk()
        window2.title('计时器【v0.0】')
        window2.geometry('300x120')

        l2_1 = tk.Label(window2, text='年', font=('宋体', 15))
        l2_1.place(x=90, y=20)
        l2_2 = tk.Label(window2, text='月', font=('宋体', 15))
        l2_2.place(x=170, y=20)
        l2_3 = tk.Label(window2, text='日', font=('宋体', 15))
        l2_3.place(x=250, y=20)
        l2_4 = tk.Label(window2, text='有效日期【1970/1/2-3001/1/1】', font=('宋体', 10))
        l2_4.place(x=50, y=50)

        year = tk.Entry(window2, text=None, font=('宋体', 15), width=5)
        month = tk.Entry(window2, text=None, font=('宋体', 15), width=5)
        day = tk.Entry(window2, text=None, font=('宋体', 15), width=5)
        year.place(x=40, y=20)
        month.place(x=120, y=20)
        day.place(x=200, y=20)

        def get_time():
            try:
                y = int(year.get())
                m = int(month.get())
                d = int(day.get())
                lt_ = time.strptime(f'{y} {m} {d}', '%Y %m %d')
                seconds_get = time.mktime(lt_)
            except BaseException:
                tk.messagebox.showerror(message='输入有误!')
            else:
                window2.withdraw()

            string1 = '查询日期距离现在还有:'
            string2 = '查询日期距离现在已过去:'

            s

3、执行下面的代码进行编译:

pyinstaller -F -w timesss.py

说明:我把上面的pyton代码存储到了“timesss.py”这个文件里面,参数“-F”表示生成一个可执行文件,参数“-w”表示,不显示DOS黑窗口,执行完命令,编译大概需要10秒左右的时间,exe文件位于dist目录下面

编译就到这里结束了,编译后的exe文件在dist目录下面,下面我们打开dist目录下的“timesss.exe”如下图所示,到这里为止,整个编译就结束了。

通过seo圣人

windows server2019 IIS安装配置Python环境

Python是一门近几年兴起的比较热门的语言,其易学易用的特性,让很多人开始着手学习这门语言,python支持linux、MAC、windows等平台,那么今天我要讲的是在windows2019系统的IIS里面配置python环境。

在IIS配置python环境前,我也查阅了不少的资料,折腾了很久,最终配置成功,我来说说我的配置流程。

1、下载安装python软件,下载地址如下:

https://www.python.org/downloads/

打开这个网址,找到“Download the latest version for Windows”下面的“Download Python 3.8.3”点击下载,然后安装。

2、打开IIS,点击下面的图标

找到ISP和CGI限制,如下图所示:

3、点右键,选择添加,在ISAP或CGI路径下输入python的安装路径,因为我按照在C盘,所有我输入“C:\Program Files\python\python.exe %s %s”,在描述下面的位置输入“python”,完成后点确定,如下图所示:

4、找到处理程序映射打开,在请求脚本输入“*.py”,在可执行文件下面输入“”C:\Program Files\python\python.exe” %s %s”,在名称输入“python”。如下图所示:

5、至此,windows server2019 IIS下python的简单配置就完成了。

下面说说在IIS下配置环境会遇到的几个坑。

1、输入路径后面需要跟两个%s,用空格隔开,网上很多教程写的是s%,正确的应该是s在百分号的后面,这可能是书写习惯造成的错误。

2、安装python的时候选择集成到环境变量,如果你没选择,恭喜你,你只能手工设置了。

IIS下测试python环境是否配置成功:

1、新建一个网站,怎么建就不用我说了吧,注意看进程池的设置,(一定要选择无托管代码)如下图所示:

2、设置默认文档,添加“index.py”

3、新建一个名为index.py的python测试文件,输入以下内容:

#!/usr/bin/python
import cgi
import json
print ("Content-Type: text/html")
print ("")
print ("<html>")
print ("<h2>CGI Script Output</h2>")
print ("<p>This page was generated by a Python CGI script.</p>")
print ("</html>")

保存后,用你的IP或者域名访问,如果配置成功,会出现下面的图片,如果失败,请自找原因吧!

通过seo圣人

Python用raw_input获取键盘输入报错怎么办?

在学习python的时候使用raw_input来获取键盘输入,结果出现了下面的报错:

Traceback (most recent call last):
  File "******\***.py", line 19, in <module>
    j = raw_input("aa")
NameError: name 'raw_input' is not defined

遇到这样的问题让我束手无策,翻阅了大量的资料发现是环境的问题,原来Python从3.0开始抛弃了raw_input这个函数,input函数取而代之,代码如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

def sum(n):
    if (n == 1):
        s=1
    else:
        s = n * sum(n-1)
    return s

i = input("请输入:")
j = sum(i)
print (j)

看了官方的手册,写出了上面的代码,结果又是报错,报错代码如下:

Traceback (most recent call last):
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\ding\1.py", line 16, in <module>
    j = sum(b)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\ding\1.py", line 9, in sum
    s = n * sum(n-1)
TypeError: unsupported operand type(s) for -: 'str' and 'int'

无奈之下,继续看官方手册对input的介绍,原来官方对input的解释是这样的:

 input([prompt]) 函数和 raw_input([prompt]) 函数基本类似,但是 input 可以接收一个Python表达式作为输入,并将运算结果返回。 input函数返回的是字符串。

说input返回的是一个字符串,而不是int型的,因此才会报错,知道这个问题就好办了,咱们把获取的字符串转换成int型问题就解决了,代码如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-


def sum(n):
    if (n == 1):
        s=1
    else:
        s = n * sum(n-1)
    return s


i = input("请输入:")
b = int(i)
j = sum(b)
print (j)

到这里,问题彻底解决!总结:在Python环境中,读取键盘输入的函数有raw_input和input两个,在python3里面,函数raw_input已经被丢弃,而input函数从键盘中读取的字符默认为string型。因此读取键盘输入的数据需要根据你的实际环境来写,如果用input来获取字符,记得转换类型!

通过seo圣人

位运算与位移怎样理解?

在python中,位运算分为按位与运算(&)、按位或运算(|)、按位异或运算(^)、按位取反运算(~)、按位左移运算(<<)和按位右移运算(>>),当然了在别的编程语言里面也有涉及这个知识点,譬如C语言、PHP语言、JAVA语言等等,原理都是想通的,俗话说的好“温故而知新”,我在这里把这个知识点再强调一遍。

学过计算机的人对二进制并不陌生,这个位运算其实就是基于二进制的,那么我们在python代码中什么两个变量,方便我们通过实验来讲解位运算:
a = 623 #变量a的二进制为:0010 0110 1111
b = 139 #变量b的二进制为:0000 1000 1011

1、按位与运算(&)
我们先把a和b进行按位于运算,也就是
print a&b #打印的结果是11
为什么结果是11呢?其实在按位与运算中,参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0,那么a和b进行按位与运算之后的二进制就是“0000 0000 1011”,将这个二进制的数字转换成十进制结果就是11。请看下面的按位与运算图解:

2、按位或运算(|)
print a|b # 打印结果是751
在按位或运算中,只要对应的二个二进位有一个为1时,结果位就为1。那么a和b进行按位或运算的的二进制结果就为0010 1110 1111,转换为二进制的结果就是751。请看下面的按位或运算图解:

3、按位异或运算(^)
print a^b # 运算结果为740
在按位异或运算中,当两对应的二进位相异时,结果为1,相同则为0,那么a和b进行按位异或运算的二进制结果就为0010 1110 0100,转换为二进制的结果就为740。请看下面的按位异或运算图解:

4、按位取反运算(~)
print ~a # 运算结果为-624
print ~b # 运算结果为-140
在按位取反运算中,对数据的每个二进制位取反,即把1变为0,把0变为1 。~a的二进制按位取反运算后的二进制结果为1111 1101 1001 0000转换为10进制的结果是-624,~b的二进制按位取反运算后的二进制结果为1111 0111 0100,转换为十进制的结果为-140,这里涉及到反码、补码知识,忘记了的同学请自行恶补!请看下面的按位取反运算图解:

5、按位左移运算(<<)
print a<<b #运算结果为434167633083893069286773515120622788069556224
在左移动运算中,运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。因为数字太大了,我就懒得写了。

6、按位右移运算(>>)
print a>>b #运算结果为0
在右移动运算中,把”>>”左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数,这个数字推算起来也不得了,我也就不多写了,你知道是怎么回事就行了。

 a<<b其实就是把a转换成二进制,向左移动139位,然后在转换成十进制。
 a>>b其实就是把a转换成二进制,向右移动139位,然后在转换成十进制。

因为例子中的数字太大,我现在把数字变小一点,方便大家理解
a=11 #二进制为1011
b=3  #二进制为11
那么a<<b的运算结果如下:
0000 0000 1011
向左边移动3个位置,结果就为:
0000 0101 1000
转换成十进制就等于88

a>>b的运算结果如下:
那么a>>b的运算结果如下:
0000 0000 1011
向右边边移动3个位置,结果就为:
0000 0000 0001

转换成十进制就等于1

针对python的位运算今天就讲这么多,如果你还有不明白的,欢迎在下方留言,咱们一起学习,共同研究!