正 文:
本文记录下飘易在Python开发中遇到的一些常见问题:
* pip安装镜像
一般的pip安装由于使用的国外的资源,速度可能比较慢,这个时候可以指定 -i 参数设定国内的镜像,比如 豆瓣的:
* 安装win32模块:
pipinstall pypiwin32 -i https://pypi.douban.com/simple
包括了:
_win32sysloader
_winxptheme
mmapfile
odbc
perfmon
servicemanager
timer
win2kras
win32api
win32clipboard
win32console
win32cred
win32crypt
win32event
win32evtlog
win32file
win32gui
win32help
win32inet
win32job
win32lz
win32net
win32pdh
win32pipe
win32print
win32process
win32profile
win32ras
win32security
win32service
win32trace
win32transaction
win32ts
win32wnet
winxpgui
问题:如何关闭selenium开发中的chromedriver.exe 或 geckodriver.exe 的console命令行窗口
采用selenium操作浏览器执行自动化操作的场景时,在使用pyinstaller 打包成exe文件后,会有chromedriver.exe 或 geckodriver.exe 的console命令行窗口,如:
我们打包成exe文件一般是要分发到客户电脑上,出现这个窗体不太友好,我们需要把它隐藏掉:
找到python安装目录,比如:
D:\Python\Python37\Lib\site-packages\selenium\webdriver\common\service.py
修改这个文件,先在顶部导入依赖包:from win32process import CREATE_NO_WINDOW
然后找到def start(self) 函数,里面的 subprocess.Popen增加一个参数:creationflags=CREATE_NO_WINDOW
最终改成:self.process= subprocess.Popen(cmd, env=self.env,
close_fds=platform.system() != 'Windows',
stdout=self.log_file,
stderr=self.log_file,
stdin=PIPE, creationflags=CREATE_NO_WINDOW)
也可以直接使用creationflags=0x08000000这样的值。
重新打包pyinstaller -F -w main.py 就可以了。
问题:pycharm 提示找不到模块 No module named 'wx'
应该是pycharm设置的默认python编译器不正确,打开Settings- Project Interpreter,选择正确的编译器,比如全局的已安装第三方包的编译器:
* pyCharm创建可复用的虚拟python运行环境
首次创建项目时:
注意勾选Inherit globalsite-packages 和 Make available to all projects。以后创建其他项目时,选择这个虚拟环境即可,使用这个虚拟环境可以解决一些cannot find reference 'QtWidgets' in '__init__.py 错误,如果使用全局的python环境,pyCharm这里有一些bug的。
问题:第三方模块tomorrow报错:
报错日志如下:Traceback(most recent call last):
File"D:/Python/project/chrome/mainfox.py", line 15, in
from tomorrow import threads
File"D:\Python\Python37\lib\site-packages\tomorrow\__init__.py", line 1,in
from .tomorrow import threads
File"D:\Python\Python37\lib\site-packages\tomorrow\tomorrow.py", line 20
def async(n, base_type, timeout=None):
^
SyntaxError:invalid syntax
解决:async 到python 3之后是内置关键字,不能使用,重命名一下,找到:Python37\lib\site-packages\tomorrow\tomorrow.py
把async改成async_tm 就可以了。