如何使用诗歌从现有项目中导入requirements.txt

时间:2020-07-06 20:38:29

标签: python pip python-poetry

我正在现有项目中试用Poetry。它最初使用pyenv和virtual env,所以我有一个带有项目依赖项的modex = mode(np.diff(modeloa['X'].unique())) modey = mode(np.diff(modeloa['Y'].unique())) modez = mode(np.diff(modeloa['Z'].unique())) for numberx, numbery, numberz in zip(modeloa['X'].unique(),modeloa['Y'].unique(),modeloa['Z'].unique()): if numberx + modex not in modeloa['X'].unique() and numberx - modex not in modeloa['X'].unique(): modeloa = modeloa[modeloa['X'] != numberx] print("This coordinate in X-axis is not in the center of the block: " + str(numberx)) if numbery + modey not in modeloa['Y'].unique() and numbery - modey not in modeloa['Y'].unique(): modeloa = modeloa[modeloa['Y'] != numbery] print("This coordinate in Y-axis is not in the center of the block: " + str(numbery)) if numberz + modez not in modeloa['Z'].unique() and numberz - modez not in modeloa['Z'].unique(): modelob = modeloa[modeloa['Z'] != numberz] print("This coordinate in Z-axis is not in the center of the block: " + str(numberz)) 文件。

我想使用Poetry导入__init__.py文件,以便我可以第一次加载依赖项。我浏览了诗歌的文档,但是还没有找到一种方法。你能帮我吗?

我知道我可以手动添加所有软件包,但是我希望有一个自动化的过程,因为有很多软件包...

8 个答案:

答案 0 :(得分:12)

poetry不直接支持此功能。但是,如果您有一个手工制作的所需软件包列表(最多没有任何版本号),则仅包含主要依赖项,而不包含依赖项的依赖项,您可以这样做:

$ cat requirements.txt|xargs poetry add

答案 1 :(得分:3)

我没有足够的声誉来发表评论,但是对@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

,并且在调用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.

添加开发者依赖项就像添加-D--dev参数一样简单。

# dev dependancies example
cat requirements-dev.txt | grep -E '^[^# ]' | cut -d= -f1 | xargs -n 1 poetry add -D

最后,如果您的开发需求是从父需求文件安装的,例如:

-r base.txt

package1
package2

然后,当诗歌运行时,这将产生错误,但是,它将继续越过-r base.txt行并按预期安装软件包。

在Linux manjaro上进行测试,并按照here的指示安装了诗歌。

答案 2 :(得分:1)

我找到的最好的方法是这个:

$ for item in $(cat requirements.txt); do poetry add "${item}"; done

答案 3 :(得分:0)

一个班轮:

cat requirements.txt | grep -E '^[^# ]' | cut -d= -f1 | xargs -n 1 echo poetry add

答案 4 :(得分:0)

我很高兴这可能会有些晚,但是您可以使用

poetry add `cat requirements.txt`

答案 5 :(得分:0)

只需使用普通的requirements.txt并使用awk过滤掉版本号:

awk -F '==' '{print $1}' requirements.txt | xargs -n1 poetry add

-F指定过滤器或分割点。 $ 1是拆分中的第一个参数。输入文件作为最后一个参数。之后,您可以使用poetry add将其通过管道传递到xargs -n 1,以连续每一行而不是一次用空格分隔的字符串来调用poetry add。如果您想一次使用所有条目,只需省略-n 1。还要确保诗歌环境已经存在。

答案 6 :(得分:0)

对于 Powershell:

$reqs = @(cat requirements.txt)
for($i = 0; $i -lt $reqs.length; $i++){poetry add $reqs[i]}

请注意,这不会忽略需求文件中的注释或任何其他内容。这严格将其视为原始文本,因此它期望每一行都是一个包。

答案 7 :(得分:-1)

这与诗歌相反

poetry export -f requirements.txt --without-hashes > requirements.txt