我的requirements.txt已包含dataclasses
在内,以向后移植python 3.6
然而,一些构建机器和同事使用 python 3.7,当尝试安装此模块时会失败。
有没有办法让数据类仅在必要时安装?
通过requirements.txt构建docker镜像时安装包。在 Dockerfile 中它读取
COPY requirements.txt /app/requirements.txt
RUN pip3 install -r /app/requirements.txt
Run Code Online (Sandbox Code Playgroud)
在 requests.txt 中,我放置了用于安装私有 git 存储库的部署令牌,例如以下示例:
git+https://gitlab+deploy-token-123456:a1b2c3d4e5f6g7h8j9@gitlab.com/example/lib.git@a1b2c3d4e5f6g7h8j9k1l2m3n4o5p6q7r8s9t
Run Code Online (Sandbox Code Playgroud)
它会抛出一个错误,ModuleNotFoundError: No module named 'Cython'
.
然而,即使我将 Cython 包含在要求中并且它被正确收集,我仍然遇到相同的错误。
以下是完整的消息:
docker build -t docker.example/example:dev .
Sending build context to Docker daemon 8.704kB
Step 1/7 : FROM python:3.6.6-alpine
---> a78e257617d1
Step 2/7 : RUN apk update
---> Using cache
---> 35e6b7308e61
Step 3/7 : RUN apk add gcc build-base musl-dev libc-dev util-linux-dev linux-headers python3-dev git ca-certificates libffi-dev bash postgresql-libs postgresql-dev
---> Using cache …
Run Code Online (Sandbox Code Playgroud) 我的开发人员希望能够将库发布为“测试版”或“发布版”。
IE:
1.2.3-beta
1.2.3
在消费项目中,他们无法给我任何关于何时想要使用beta
或release
包的具体标准。我们有 CI,但没有任何明确的“何时”,我无法支持两个单独的点馈送,因为它们可能会失败。因此,我建议利用需求文件中的版本范围语法,这样他们就可以在签入期间指定他们想要的内容。他们从来没有做过这样的事情,而我基本上是一个Python菜鸟。是否可以过滤预发布标签?IE
会lib == 1.*.*-*
取beta
包裹吗?
和
会lib == 1.*.*, !=1.*.*-*
提取release
包裹并确保排除任何beta
包裹吗?
我会自己尝试我的理论,但我对 python 不太了解,无法在本地模拟某种示例库,而且他们太忙了,无法研究它。
我正在尝试在我的 Linux Mint 发行版上安装 python 模块“pyAudioProcessing”(https://github.com/jsingh811/pyAudioProcessing),而requirements.txt 中的一项导致了问题:python-magic-bin==0.4.14
。当我运行时pip3 install -e pyAudioInstaller
,出现错误:
ERROR: Could not find a version that satisfies the requirement python-magic-bin==0.4.14 (from pyAudioProcessing==1.1.5) (from versions: none)
ERROR: No matching distribution found for python-magic-bin==0.4.14 (from pyAudioProcessing==1.1.5)
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用 手动安装模块,则会出现相同的错误pip3 install python-magic-bin
。该模块在我的 Windows 机器上安装没有问题。
pypi.org 允许我手动下载文件,但只有 Windows 和 MacOS .whl 文件可用。我尝试简单地从列表中删除该要求,但这导致出现大量其他错误,因此我认为该模块是合法需要的。
你是另一个python-magic-debian-bin
我可以下载的模块。有没有一种简单的方法可以说服 pyAudioInstaller 使用另一个模块而不是原来的模块?就像我可以以某种方式重命名python-magic-debian-bin
为python-magic-bin
并希望它能成功吗?
假设我编写了一个docker-compose.dev.yml
文件来使用 Docker 设置 Flask 项目(Web 应用程序)的开发环境。我docker-compose.dev.yml
设置了两项服务,一项用于数据库,一项用于在调试模式下运行 Flask 应用程序(这允许我进行热更改,而无需重新创建/重新启动容器)。这使得开发团队中的每个人都可以非常轻松地使用相同的开发环境。然而,存在一个问题:很明显,在开发应用程序时,有必要安装库,并在文件中列出它们requirements.txt
(在Python的情况下)。为此,我只看到使用 Docker 开发环境的两种替代方案:
pip install ...
和pip freeze > requirements.txt
命令。requirements.txt
并重建容器。第一个选项有点费力,而第二个选项则有点“脏”。还有比上述两种选择更合适的选择吗?
编辑:我不知道我是否在问一些没有意义的事情,但如果有人能给我一些关于我想要完成的任务的指导,我将不胜感激。
最近买了一台新的 Mac 并准备将它用于 Python 和 iOS 开发。Python 运行良好——尤其是在安装 Xcode、macports 和 Apple 的命令行工具之前,pip'ing git repos 有很多 requirements.txt 依赖项。
现在 pip 可以很好地用于单独安装(例如,pip install twilio),但是每当我针对 requirements.txt 文件运行 pip 时,它都会失败(无论是否使用 sudo):
pip install ./requirements.txt
Exception:
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/pip-1.2.1-py2.7.egg/pip/basecommand.py", line 107, in main
status = self.run(options, args)
File "/Library/Python/2.7/site-packages/pip-1.2.1-py2.7.egg/pip/commands/install.py", line 225, in run
InstallRequirement.from_line(name, None))
File "/Library/Python/2.7/site-packages/pip-1.2.1-py2.7.egg/pip/req.py", line 118, in from_line
return cls(req, comes_from, url=url)
File "/Library/Python/2.7/site-packages/pip-1.2.1-py2.7.egg/pip/req.py", line 43, in __init__
req = pkg_resources.Requirement.parse(req)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 2510, in parse
reqs …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用pip install -r requirements.txt
.来维护依赖项.但是,某些必需的包不直接支持Python 3,但可以使用手动转换2to3
.
在做什么时有办法强制自动pip
运行2to3
这些包pip install -r requirements.txt
吗?
我注意到,当我尝试使用泊坞窗(图为主)安装新的PIP封装,它实际上并没有维持系统.我必须从requirements.txt重建并安装pip包
我试图运行fig run web pip install django
,我看到包安装,但我每次运行它重新安装,而不会提示要升级的命令时(所以我知道软件包安装不沾)
这只是Docker的继承设计吗?我很困惑为什么总是需要建筑
我开发了一个 Python/Django 应用程序,它从一个虚拟环境(由 创建virtualenv
)运行。
当创建虚拟环境,全球版本的pip
默认情况下复制到新创建的环境中,这可能是非常过时的(例如,版本1.5.4
从python-pip
包在Ubuntu 14.04)。
为了避免手动pip
升级,将pip
版本固定在requirements.txt
文件中听起来是个好主意,例如添加以下行:
pip==8.1.2
通过更改需求文件中的行,指定pip
版本还允许pip
在所有托管应用程序环境(本地、开发、生产)中升级。
这听起来是个好习惯吗?这种方法有什么问题吗?
我正在尝试将 Flask Web 应用程序部署到 Heroku,但我看到了关于需要在 git 存储库中包含哪些文件的相互矛盾的信息。
我的 webapp 是在虚拟环境 (venv) 中构建的,所以我有一个Pipfile
和一个Pipfile.lock
. 我还需要requirements.txt
吗?一个会取代另一个吗?
我的另一个相关问题是,如果某个包无法在虚拟环境中安装会发生什么:我可以手动将它添加到requirements.txt
或Pipfile
吗?这是否会有效地做与pipenv install ...
将包添加到需求列表之外的其他事情相同的事情(考虑到 Heroku 正在部署时安装包)。
requirements.txt ×10
python ×9
pip ×7
docker ×3
fig ×1
flask ×1
gitlab ×1
heroku ×1
macos ×1
macports ×1
module ×1
pipfile ×1
pypi ×1
python-2to3 ×1
python-3.7 ×1
python-venv ×1
virtualenv ×1