最近在用Python做开发,需要搭建一些新环境,过程中遇到了很多坑,大部分通过百度很容找到解决方法,但也有些新问题很棘手,不容易找到解决方法,需要自己一点点的去摸索,记录一下做个备忘。
先说一下不要太追新,比如Python现在最新是3.8.1版,刚开始我就装的这个,但后面发现,有的模块都还没来得及适配Python的最新版,最后只能卸了换成低版本的Python。
另外,需要搭建多个项目环境时,为了避免环境混乱(模块依赖引起的相互干扰)引起不必要的麻烦,建议在虚拟环境中搭建,给每个项目建个虚拟环境,相互隔离独立,这样会方便管理很多。我使用过pipenv和poetry,个人觉得pipenv使用更简单一点,但是他们都有个共同的问题,安装模块时会比较慢(相比用pip安装),特别是第一次安装模块时很慢(要有心理准备),之后会好很多。
因为这些工具设计的逻辑就是安装模块时先分析模块的依赖关系….(大概这里是最耗时的部分)..然后下模块和相关的依赖,之后才开始安装。 目前没有特别好的加速方法, 只有设置为国内下载源,这样在下载的时候会快一些。(又或者你直接装个vmware虚拟机或者在docker里安装环境)
pipenv修改下载源方法:
打开项目文件夹里的Pipfile文件,修改成下图效果

[[source]] name = "aliyun" url = "https://mirrors.aliyun.com/pypi/simple/"
poetry修改下载源方法:
打开项目文件夹里的pyproject.toml文件,修改(添加)成下图效果

[[tool.poetry.source]] name = "ali" url = "https://mirrors.aliyun.com/pypi/simple/"
pip永久修改下载源方法:
#centos系统 #在root用户下执行: vim ~/.pip/pip.conf #添加或者修改为如下内容: [global] index-url = https://mirrors.aliyun.com/pypi/simple/ [install] trusted-host=mirrors.aliyun.com
或
#windows系统 #在user目录中创建一个pip目录和pip.ini文件,如:C:\Users\yifeng\pip\pip.ini #pip.ini文件内容如下: [global] index-url = https://mirrors.aliyun.com/pypi/simple/
更多国内下载源:
清华:https://pypi.tuna.tsinghua.edu.cn/simple/
阿里云:https://mirrors.aliyun.com/pypi/simple/
豆瓣:http://pypi.douban.com/simple/
中国科技大学:https://pypi.mirrors.ustc.edu.cn/simple/
错误信息: site-packages\apscheduler\schedulers\base.py in_create_plugin_instance KeyError:interval

这是在用 apscheduler 做定时任务功能遇到的,调试代码时没问题,是在打包成exe后,运行时才会报这个错误。
错误代码:
#添加任务,时间间隔5S scheduler.add_job(func, 'interval', seconds=5, id='test_job')
修改后:
from apscheduler.triggers.interval import IntervalTrigger #添加任务,时间间隔5S trigger = IntervalTrigger(seconds=5) scheduler.add_job(func, trigger, id='test_job')
扩展一下apscheduler的其他定时用法:
from apscheduler.triggers.cron import CronTrigger #添加任务,每天早上9:01执行一次 trigger1 = CronTrigger(day_of_week='0-6', hour='09', minute='01') scheduler.add_job(func1, trigger=trigger1, id='test_job1') #添加任务,每间隔30分钟执行一次 trigger2 = IntervalTrigger(minutes=30) scheduler.add_job(func2, trigger=trigger2, id='test_job2')
错误信息: ModuleNotFoundError:No module named ‘pkg_resources.py2_warn’

这个问题主要是因为 setuptools 版本太高引起,卸载后换装低版本就可以了。(我这本来是正常的,后来在装其他模块时被自动升级了高版的 setuptools )
pip uninstall setuptools pip install setuptools==40.0.0
未完待续。。。