【发布时间】:2023-04-08 10:34:01
【问题描述】:
我有一个非常标准的 python 应用程序,包括 setup.py 和 requirements.txt,可以使用 pip 很好地安装:
$ pip install .
$ tree -L 1 env/lib/python3.5/site-packages/
env2/lib/python3.5/site-packages/
├── myAPP
├── myAPP-0.1.0-py3.5.egg-info
...
我想使用 snaps 来构建和部署应用程序,并注意到 snapcraft 只安装我的应用程序的依赖项,而不是应用程序本身。它确实构建了一个轮子,但没有安装它:
$ snapcraft
....
Building wheels for collected packages: myAPP, blist
...
Successfully built myAPP blist
/home/ubuntu/parts/myAPP/install/usr/bin/python3 -m pip install --user
--no-compile --disable-pip-version-check --no-index
--find-links /home/ubuntu/parts/myAPP/packages blist
<other_requirements> --no-deps --upgrade
有人知道为什么myAPP 不是 pip 安装的一部分吗?
作为参考,snapcraft.yaml 在这个阶段非常简单,但我认为应该是所有需要的。 Snapcraft 在 Ubuntu 16.04 上是 v2.27.1
name: myAPP
version: '0.0.1'
summary: myAPP web application
description: |
myAPP main web application
grade: devel
confinement: strict
apps:
myAPP:
command: gunicorn myApp.wsgi
daemon: simple
plugs:
- network-bind
parts:
myAPP:
plugin: python
python-version: python3
source: /opt/backend/
进展
我检查了构建应用程序后安装了哪些软件包:
$ parts/myAPP/install/bin/pip list --format columns
Package Version Location
----------------------- -------- -------------------
appdirs 1.4.2
blist 1.3.6
myAPP 0.1.0 /opt/backend
....
如果我随后手动重新运行pip install -U myAPP,它确实会包含在site-packages 中。看看我是否可以单独重复其他构建步骤。
【问题讨论】:
-
我很乐意提供帮助,但这里没有足够的信息让我重现您的问题。我可以运行的最小 snapcraft.yaml 会很棒。
-
@Kyle 谢谢,我会更新 Q. 也取得进展,它没有安装的原因是根据 pip is 安装,但在
/opt/backend,所以 snapcraft python 插件将其过滤掉:github.com/snapcore/snapcraft/blob/master/snapcraft/plugins/…
标签: python python-3.x ubuntu-16.04 snapcraft