问题标签 [zipapp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 为使用`python -m zipapp`创建的独立应用程序导入模块的正确方法是什么?
我有一个模块,我将作为独立应用程序分发。该模块具有以下结构:
mymodule/__main__.py
包含下一行:
mymodule/fun.py
包含下一行:
如果我使用$ python -m mymodule
输出运行模块是
main is runningfun
$ python -m zipapp -p "/usr/bin/evn python" mymodule
但是,如果我使用并运行它创建一个独立的应用程序,$ python mymodule.pyz
我会收到错误
有什么问题import
?
UPD:sys.path 输出
python - Beautifulsoup4 和 lxml 的依赖地狱
我使用 Python 3.8 构建了一个小型实用程序。除其他外,它使用 beautifulsoup4 和 lxml 从 XML 文件中提取一些数据。我使用 PyCharm 和 virtualenv 进行开发,我的实用程序运行良好。
为了将 util 分发给其他人,我有一个构建脚本,它将我的代码复制到一个dist
目录并使用pip install -r requirements.txt -t dist
. 这也很好,我可以dist
从我的系统解释器(3.8,没有beautifulsoup,没有lxml)运行目录中的代码。可以从 加载依赖项dist
,它出现了。
但是,它不适用于其他机器。该脚本产生错误消息
找不到具有您要求的功能的树生成器:lxml。您需要安装解析器库吗?
这意味着beautifulsoup4 找不到lxml(与“lxml-xml”或“xml”相同)。不过,目录中的依赖dist
项似乎是正确的。似乎什么都没有。当我使用 将脚本打包为 zip 应用程序时,我得到了同样的错误python -m zipapp -p "python" dist
,这会产生一个文件dist.pyz
。它可以在我自己的机器上执行,但会遇到相同的错误消息。
这是我的 requirements.txt 文件:
这是 BeautifulSoup 解析器的实例化:
xml_data 只是一个字符串,其中包含一些从另一个工具生成的文件中读取的有效 XML。
我没主意了。我在 .NET 和 Java 方面有很多经验,但我不是这个星球上最伟大的 Python 编码器。看来我已经进入了依赖地狱的Python版本......我真的不想让脚本的用户pip install lxml
在他们的机器上调用。我想分发一个包含所有依赖项的独立应用程序。
任何帮助表示赞赏。
更新
requirements.txt 中条目的顺序没有区别(正如我所希望的那样)。
我添加了
到主脚本,以便将 lxml 导入我的脚本。这会产生错误
回溯(最后一次调用):文件“C:\Program Files\Python38\lib\runpy.py”,第 194 行,在 _run_module_as_main return _run_code(code, main_globals, None, File "C:\Program Files\Python38\lib \runpy.py”,第 87 行,在run_code exec(code, run_globals) 文件中“dist.pyz_main.py ”,第 4 行,在文件“”中,第 259 行,在 load_module 文件中“dist.pyz\lrg.py” ,第 3 行,文件“”,第 259 行,load_module 文件“dist.pyz\lxml\builder.py”,第 44 行,ModuleNotFoundError:没有名为“lxml.etree”的模块
当作为 zip 应用程序运行时,但在我使用 virtualenv 的 IDE 中运行良好。
python - 如何在 Jupyter Notebook 中使用 python zipapp 作为内核
我有一个使用 zip 应用程序 shiv 制作的 python 环境,并想将它用于我的Jupyter Notebook。我看到了很多使用 virtual-env 的解决方案,但没有使用 zip 应用程序。我尝试使用 . 创建一个自定义内核python3 -m ipykernel install --user --name=myenv.pyz
,但是当我使用它时,我仍然无法导入我的自定义库。知道我该怎么做吗?
我知道为环境选择.pyz不是一个好的解决方案,但我无法更改这部分过程。
python - 如何制作当前目录的zipapp?
据我了解
python -m zipapp myapp
,创建名为 myapp 的目录的 .pyz 文件。如何创建设置我的工作目录的当前文件夹的 .pyz。
我试过python -m zipapp .
哪个不起作用。
打包工作目录的确切参数是什么?
对以下内容有同样的疑问:
如果我这样做pip install -r requirements.txt --target <directory>
,我如何提及当前工作目录<directory>
python - 带有数据文件的 Python zipapp
我创建了一个 .pyz 应用程序,结构如下:
myapp
┣ 模板
┃ ┗ index.j2
┗ main.py
在主程序中我有这个:
尝试执行程序时收到错误:jinja2.exceptions.TemplateNotFound: index.j2
如何访问 zipapp 中的模板目录?它使用包外的 .py 文件完美运行。