Fel*_*ipe 38 python pip python-poetry
我正在现有项目中试用Poetry。它最初使用 pyenv 和 virtual env 所以我有一个requirements.txt
包含项目依赖项的文件。
我想requirements.txt
使用 Poetry导入文件,以便我可以第一次加载依赖项。我已经查看了诗歌的文档,但我还没有找到一种方法来做到这一点。你可以帮帮我吗?
我知道我可以手动添加所有包,但我希望有一个更自动化的过程,因为有很多包......
fin*_*mer 61
poetry
不直接支持这个。但是如果你有一个手工制作的所需包列表(最好没有任何版本号),它只包含主要依赖项而不包含依赖项的依赖项,你可以这样做:
$ cat requirements.txt|xargs poetry add
Run Code Online (Sandbox Code Playgroud)
Jam*_*ker 11
我很欣赏这可能有点晚了,但你可以使用
poetry add `cat requirements.txt`
Run Code Online (Sandbox Code Playgroud)
Ael*_*ius 11
针对 Windows PowerShell 用户的一句话:
@(cat requirements.txt) | %{&poetry add $_}
Run Code Online (Sandbox Code Playgroud)
有关使用 PowerShell 进行管道参数的更多信息,请参阅此有用的答案。
Dan*_*els 10
我没有足够的声誉来发表评论,但对@Liang的回答的增强是省略回声并调用诗歌本身。
cat requirements.txt | grep -E '^[^# ]' | cut -d= -f1 | xargs -n 1 poetry add
就我而言,这成功地将包添加到pyproject.toml
文件中。
作为参考,这是我的requirements.txt
文件的片段:
pytz==2020.1 # https://github.com/stub42/pytz
python-slugify==4.0.1 # https://github.com/un33k/python-slugify
Pillow==7.2.0 # https://github.com/python-pillow/Pillow
Run Code Online (Sandbox Code Playgroud)
并且在调用时cat requirements.txt | grep -E '^[^# ]' | cut -d= -f1
(注意省略xargs -n 1 poetry add
用于演示)它将输出以下内容:
pytz
python-slugify
Pillow
# NOTE: this will install the latest package - you may or may not want this.
Run Code Online (Sandbox Code Playgroud)
添加开发依赖项就像添加-D
or--dev
参数一样简单。
# dev dependancies example
cat requirements-dev.txt | grep -E '^[^# ]' | cut -d= -f1 | xargs -n 1 poetry add -D
Run Code Online (Sandbox Code Playgroud)
最后,如果您的开发需求是从父需求文件安装的,例如:
-r base.txt
package1
package2
Run Code Online (Sandbox Code Playgroud)
然后这将在诗歌运行时产生错误,但是,它将继续越过该-r base.txt
行并按预期安装软件包。
按照此处的说明在安装了诗歌的 Linux manjaro 上进行了测试。
poetry-add-requirements.txt
我专门为此制作了一个工具。代码
安装它pipx install poetry-add-requirements.txt
,
然后运行poeareq
。
运行poetry-add-requirements.txt
,可以选择指定您的requirements.txt 文件和--dev
开发依赖项。
poeareq
提供的是 的别名poetry-add-requirements.txt
。
$ poeareq --help
usage: poeareq [-h] [-D] [requirements.txt files ...]
Add dependencies specified in requirements.txt to your Poetry project
positional arguments:
requirements.txt file(s)
Path(s) to your requirements.txt file(s) (default: requirements.txt)
options:
-h, --help show this help message and exit
-D, --dev Add to development dependencies (default: False)
Run Code Online (Sandbox Code Playgroud)
poetry
.poetry add
错误时停止。小智 6
我发现的最好的方法是这个(unix shell 命令):
for item in $(cat requirements.txt); do poetry add "${item}"; done
只需使用简单的requirements.txt并使用awk过滤掉版本号:
awk -F '==' '{print $1}' requirements.txt | xargs -n1 poetry add
Run Code Online (Sandbox Code Playgroud)
-F
指定过滤器或分割点。$1 是分割中的第一个参数。输入文件作为最后一个参数。之后,您可以将其通过管道连续poetry add
调用每一行,而不是立即使用空格分隔的字符串。如果您想一次使用所有条目,只需省略xargs -n 1
poetry add
-n 1
。还要确保诗歌环境已经存在。
仅使用requirements.txt省略过滤器并使用
awk '{print $1}' requirements.txt | xargs -n1 poetry add
Run Code Online (Sandbox Code Playgroud)
但其他工具cat
也适合这种情况。
归档时间: |
|
查看次数: |
13903 次 |
最近记录: |