问题标签 [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.

0 投票
1 回答
399 浏览

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 输出

0 投票
0 回答
328 浏览

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 中运行良好。

0 投票
0 回答
89 浏览

python - 如何在 Jupyter Notebook 中使用 python zipapp 作为内核

我有一个使用 zip 应用程序 shiv 制作的 python 环境,并想将它用于我的Jupyter Notebook。我看到了很多使用 virtual-env 的解决方案,但没有使用 zip 应用程序。我尝试使用 . 创建一个自定义内核python3 -m ipykernel install --user --name=myenv.pyz,但是当我使用它时,我仍然无法导入我的自定义库。知道我该怎么做吗?

我知道为环境选择.pyz不是一个好的解决方案,但我无法更改这部分过程。

0 投票
1 回答
48 浏览

python - 如何制作当前目录的zipapp?

据我了解 python -m zipapp myapp ,创建名为 myapp 的目录的 .pyz 文件。如何创建设置我的工作目录的当前文件夹的 .pyz。

我试过python -m zipapp .哪个不起作用。

打包工作目录的确切参数是什么?

对以下内容有同样的疑问:
如果我这样做pip install -r requirements.txt --target <directory>,我如何提及当前工作目录<directory>

0 投票
1 回答
22 浏览

python - 在 PyPi Nexus 上存储 python zipapp (`.pyz`)

我使用 Python zipapp(更准确地说是shiv)来发布 Python 模块。

我想将生成的 zipapp ( .pyz) 存储在 Nexus 上(最好pypi在 Nexus 上),以跟踪我在 CI/CD 管道中构建的工件。

如何.pyz在 Nexus 上上传?

pypi是否可以将其存储在 Nexus上托管?

0 投票
0 回答
37 浏览

python - 带有数据文件的 Python zipapp

我创建了一个 .pyz 应用程序,结构如下:

myapp
┣ 模板
┃ ┗ index.j2
┗ main.py

在主程序中我有这个:

尝试执行程序时收到错误:jinja2.exceptions.TemplateNotFound: index.j2

如何访问 zipapp 中的模板目录?它使用包外的 .py 文件完美运行。