python怎么导包
作者:东流去
购买理由
奶爸玩Home Assistant用的硬件是台M1的mac,软件配置是这个样子的:
Home-brew 4.0.3 里面装了python3.10,在python虚拟环境里跑的Home Assistant Core
本来的配置home-brew3+python3.9+home assistant core2023.1.7
这篇就是升级到home-brew4+python3.10+homeassistant core 2023.2.0的纯干货
升级python倒3.10 的原因很简单,python3.9的官方支持只能到Home Assistant 2023.1.7,更新的版本需要python3.10,好吧,本来不想折腾,但实在是没有办法,只好硬着头皮升级,中间走了很多弯路,写出来希望后来者会更轻松一些。
Mac os 自带有phthon3.9,但是一般老程序员都会建议,重新在Home-brew里部署一个独立的Python,毕竟重装Home-brew比重装macos系统容易多了,一旦出了问题删除Home-brew,就可以轻易推到重来。
Home-brew这个包管理器,也更加干净整洁,方便管理。
第一步:Home-brew4的部署
没有什么难度,本质上就是换源,提高访问的速度。搜索“Homebrew 源使用帮助”,参考清华源或者中科大源帮助文档就可以。
关键点就是在配置文件里,加上这几行代码,我的文件是在这个位置 /.zshrc (等同于 /users/用户名/.zshrc)
export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.ustc.edu.cn/brew.git"
export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.ustc.edu.cn/homebrew-core.git"
export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles"
export HOMEBREW_API_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles/api
eval $(/opt/homebrew/bin/brew shellenv)
解释一下,添加API这一行是因为Home-brew更新了api这一访问方式,这一点与home-brew3不同。
然后,homebrew update
homebrew upgrade
homebrew upgrade
一切正常后,转到下一步
第二步,安装python3.10
brew里的python是没有升级到3.10这个概念的,各个版本的python都可以共存,通过创建不同的虚拟环境解决共存问题。
brew install [email protected] #安装时指定特定版本
关键点在这里,奶爸假设你的设备已经在3.9的环境下正常运行了Home assistant 2023.1.7,下来只要创建虚拟环境,在环境里再安装一遍更新版本的home assistant,就可以实现home assistant的平滑无感升级。
mkdir ~/Homeassistant #创建虚拟环境文件所在文件夹,位置自选
cd ~/Homeassistant
python3 -m venv .
source bin/activate
看到这个就成功了,说明了这是python是运行在homeassistant这个环境里。
(Homeassistant) chenwenli@Mini homeassistant %
第三步,安装home assistant
python3.10 -m pip install wheel
如果提示需要升级 pip 或其他报错运行下方指令
python3.10 -m pip install --upgrade pip
pip3 install homeassistant==2023.2.0 #这是python3.9不支持的版本,能安装说明成功了。
pip3 install --upgrade homeassistant #升级到最新的版本
hass
能启动就成功了,home assistant 顺利从3.9过渡到3.10,无痛的那种,不需要任何的设置。
hass --script macos install
开机自启动 home assistant
以后升级到python3.11,同样的方法想必也会有用,现在可别升级,不支持的。
外观展示
ios16 家庭外观大改了,不难看
\n
使用感受
升级后能感知的明显变化是,美的的热水器可以在Homekit里调节温度了。
继小米全家桶之后,美的的设备也可以很容易接入Homekit,实现iphone的控制,在这里感谢大佬georgezhao2010的插件,搜索midea_ac_lan就能找到。
效果不错
\n
总结
技术的更新从来没有停下来脚步,在matters协议一统之前,homeassistant还是最佳的解决方案。
将来的技术肯定跟好,但当下的技术才是奶爸的最爱。
每个人的软硬件情况不一,有问题可以随时留言提问。
祝人人都可以愉快的玩耍。
\n
童肢亚3174python 能导出整体的包吗 -
文筠柳19448944113 ______ 可以的,直接去安装目录下把包对应的代码拷贝出来就可以了.
童肢亚3174python 如何根据不同的环境配置导入不同的包 -
文筠柳19448944113 ______ 比如配置文件里配了环境变量名 EVN = 'dev'EVN = 'pro'if EVN = 'dev':import aelif EVN = 'pro':import b#字符串包 module = __import__('datetime') print module.datetime.now()
童肢亚3174如何导入其他位置的python模块 -
文筠柳19448944113 ______ import sys print sys.path 上面的代码会给出所有可用的python路径,你把.py文件放到这些路径下面就可以在其他文件里导入它了.另外一个特殊的路径就是当前路径,比如你在一个文件夹test下新建两个.py文件,分别为123.py 和456.py ,那么你...
童肢亚3174python怎么导入csv文件 -
文筠柳19448944113 ______ python中有一个读写csv文件的包,直接import csv即可.利用这个python包可以很方便对csv文件进行操作,一些简单的用法如下. 读文件 csv_reader = csv.reader(open('data.file', encoding='utf-8')) for row in csv_reader: print(row)
童肢亚3174python 导入全部模块 -
文筠柳19448944113 ______ 通常的办法是,你将所有的模块都放到系统的lib目录里.或者是放到sys的path变量里. 然后就可以import了.你可以设置一个容器.在容器里,将所有需要的模块都import完成.如果不知道哪些模块,可以使用OS的WALK来遍历. 把你的用户代码跑在容器里.这样就不需要import所有的模块了. 容器可以是自己写的一个解释器,比如象是ipython这样子.也可以是一个WEB界面, 或者是一个服务,一个可以调用插件的运行模块.容器也可以是一个代码框架.
童肢亚3174如何用pip安装模块
文筠柳19448944113 ______ win+r cmd 命令指示符下输入:你用python3.x就是 pip3 install 你要安装的库名 用python2.x pip3 install 你要安装的库名
童肢亚3174python 程序怎么打包发布 -
文筠柳19448944113 ______ 发布自己的python包1. 首先先去PyPI注册帐号2. 配置~/.pypirc如下:[distutils] index-servers = pypi pypitest [pypi] username:ShaoZhengjiang password:mypassword [pypitest] username:ShaoZhengjiang password:mypassword3. 然后注册并上传自...
童肢亚3174请教大家是怎么管理 python 包的 -
文筠柳19448944113 ______ 第1步,创建一个新的,空的module对象(它可能包含多个module);第2步,把这个module对象插入sys.module中 第3步,装载module的代码(如果需要,首先必须编译) 第4步,执行新的module中对应的代码.就是说在导入一个包时,python首先去这个包下加载__init__.py.根据这个__init__.py里面规定的导入情况,再去导入其他模块.
童肢亚3174python k近邻使用哪个包 -
文筠柳19448944113 ______ 两个比较好用的工具:PyInstaller和py2exe.其中py2exe应用在windows下,而PyInstall则可应用windows、Linux以及Mac OS X上.
童肢亚3174python3没有的模块怎么手动导入模块 -
文筠柳19448944113 ______ >>>import sys>>>sys.path.append('E:\python 3.4\')>>>import fibo 以上就是代码,你可以试试在交互模式下一行一行的输入.