提取python模块,这样就不必安装它

2024-10-02 18:26:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在准备一个python脚本,它将由Kodi上的callback addon运行。问题是kodi没有所有的Python模块,您无法使用pip手动安装它们(您可以构建自己的模块插件,但这很复杂,我不想深入讨论)。因此,解决方法是导出模块并将其添加到resources文件夹中的脚本存储库中,然后在脚本中使用以下命令指定它:

import resources.themodule as themodule

我在某人的github中的某处找到了为paho.mqtt模块做这件事的人(但是我丢失了链接,很抱歉),它成功了。现在,我尝试自己使用astral模块(see here)来完成这项工作,但在Python2.7上运行它时,会出现错误

以下是我所做的:

  1. 下载了github pagesrc/astral文件夹中的所有文件
  2. 将它们保存在我的项目文件夹中的resources/astral
  3. 在我的脚本中用import resources.astral as astral调用它
  4. 运行我的脚本,看起来像

import time
import datetime
import resources.astral as astral

loc = LocationInfo(name='QC', timezone='America/Toronto',
                   latitude= 46.829853, longitude=-71.254028)
s = sun(loc.observer, date=datetime.datetime.date(datetime.datetime.now()), tzinfo=loc.timezone)
print(s["sunset"])

(注意astral需要kodi上提供的pytz模块)

这种方法在使用python3的windows 10机器上有效。但是,当我在我的Lubuntu、raspberry pie和kodi(都运行python2)上尝试相同的脚本时,我得到了一个错误:

bastien@DellFleur:~/Documents/smart_home$ python smart_tv/test.py 
Traceback (most recent call last):
  File "smart_tv/test.py", line 3, in <module>
    import resources.astral as astral
  File "/home/bastien/Documents/smart_home/smart_tv/resources/astral/__init__.py", line 77
    def now(tzinfo: datetime.tzinfo = pytz.utc) -> datetime.datetime:
                  ^
SyntaxError: invalid syntax

我不确定这个bug的原因,但我猜python2不喜欢使用冒号(:)的注释

我如何才能正确地导出astral,使它在我的kodi(python2)脚本中工作

(注意,我是python新手,这是我第一次真正尝试用这种语言做一些有用的事情)


Tags: 模块import脚本文件夹homedatetimesmartas