我正在尝试将 python 项目切换到诗歌和 pyproject.toml。以前,我们使用requirements.txt。
然而,当我尝试使用pyspark 2.4.8诗歌安装时,遇到了以下错误:
File "<string>", line 156, in <module>
AttributeError: module 'pypandoc' has no attribute 'convert'
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed
Run Code Online (Sandbox Code Playgroud)
有人遇到过这个吗?你知道为什么这是诗歌的问题而不是文学的问题吗requirements.txt?
我有一个用诗歌创作的旧项目。诗歌创建的pyproject.toml如下:
\n[tool.poetry]\nname = "Dota2Learning"\nversion = "0.3.0"\ndescription = "Statistics and Machine Learning for your Dota2 Games."\nlicense = "MIT"\nreadme = "README.md"\nhomepage = "Coming soon..."\nrepository = "https://github.com/drigols/dota2learning/"\ndocumentation = "Coming soon..."\ninclude = ["CHANGELOG.md"]\nauthors = [\n "drigols <drigols.creative@gmail.com>",\n]\nmaintainers = [\n "drigols <drigols.creative@gmail.com>",\n]\nkeywords = [\n "dota2",\n "statistics",\n "machine Learning",\n "deep learning",\n]\n\n[tool.poetry.scripts]\ndota2learning = "dota2learning.cli.main:app"\n\n[tool.poetry.dependencies]\npython = "^3.10"\nrequests = "^2.27.1"\ntyper = {extras = ["all"], version = "^0.4.1"}\ninstall = "^1.3.5"\nSQLAlchemy = "^1.4.39"\nPyMySQL = "^1.0.2"\ncryptography = "^37.0.4"\npydantic = "^1.9.1"\nrich = "^12.5.1"\nfastapi = "^0.79.0"\nuvicorn = "^0.18.2"\n\n[tool.poetry.dev-dependencies]\nblack = {extras = …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用添加新包poetry add,但它总是出现此错误:
HTTPSConnectionPool(host='10.140.240.64', port=443): Max retries exceeded with url: /api/v4/projects/118/packages/pypi/files/47f05b39ebe470235b70724fb049985ea75fad6c1a5007ad3462f3d430da338b/tg_client-0.1.10-py3-none-any.whl (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1129)')))
谁知道如何跳过这个验证?
更新:
我尝试从私有存储库添加包:
[[tool.poetry.source]]
name = "my_package"
url = "https://..."
secondary = true
Run Code Online (Sandbox Code Playgroud)
也许这就是解决方案poetry config certificates.my_package.cert false不起作用的原因。
我有一个pyproject.toml与
[tool.poetry]
name = "my-project"
version = "0.1.0"
[tool.commitizen]
name = "cz_conventional_commits"
version = "0.1.0"
Run Code Online (Sandbox Code Playgroud)
我添加了一个新功能并使用提交消息进行提交
feat: add parameter for new feature
Run Code Online (Sandbox Code Playgroud)
这是一次承诺。
然后我打电话
commitizen bump
Run Code Online (Sandbox Code Playgroud)
Commitizen 将识别次要版本的增加,更新 my pyproject.toml,并使用更新pyproject.toml的标签再次提交0.2.0。
这是第二次提交。
但现在我的pyproject.toml“不正常”(假设我希望我的构建版本与我的 git 标签同步)。
[tool.poetry]
name = "my-project"
version = "0.1.0"
[tool.commitizen]
name = "cz_conventional_commits"
version = "0.2.0"
Run Code Online (Sandbox Code Playgroud)
我已经提交了两项,一项被标记了,但事情仍然不太正确。是否有工作流程可以让一切保持一致?
我目前正在开展一个团队项目,我们需要训练神经网络。一些成员在本地计算机上工作,一些成员在 Colab 上工作(用于 GPU 使用)。我们需要具有相同的依赖关系。我已经熟悉在本地计算机上使用诗歌,但不熟悉 Colab,我想知道如何在 Colab 中使用它。
所以我做了一些测试,也遇到了一些问题。也许我可以在这里找到一些答案。先感谢您!
第一个问题:poetry add <package>不更新pyproject.toml
我想添加一个新包,假设是 torch. 根据诗歌的文档,要安装新包,我们需要运行poetry add <package>. 由于我第一次运行此命令,因此创建了一个虚拟环境以及诗歌.lock。但没有安装任何软件包。此外,诗歌.lock文件被更新,但pyproject.toml没有更新。这种情况只发生在 Colab 上。我在本地计算机上尝试过,该命令确实也会自动更新pyproject.toml文件。
第二个问题:poetry run pip install <package>不更新 pyproject.toml
相反,我们可以使用诗歌运行来安装该包pip install <package>。我在以下GitHub gist上看到了这个命令。这些软件包现已安装在虚拟环境中,但 pyproject.toml尚未更新。
这是我用于这些测试的Colab 笔记本的链接。
再次感谢你!
所以我有以下文件结构:
\nproject/\n\xe2\x94\x9c\xe2\x94\x80 cpp_src/\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 src/\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 cpp source files\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 test/\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 cpp test files\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 CMakeLists.txt\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 stub.pyi\n\xe2\x94\x9c\xe2\x94\x80 python_src/\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 ...\n\xe2\x94\x9c\xe2\x94\x80 build.py\nRun Code Online (Sandbox Code Playgroud)\n在我的build.py文件中,我使用 setuptools 使用cpp_src自定义build_ext命令来编译和打包 C++ 扩展。但是,我似乎无法让它包含存根文件stub.pyi。如何修改 setuptools 命令来执行此操作?我不太关心文件结构,所以如果setup.py中需要另一个文件cpp_src,那很好。
如果有帮助的话,我还使用 Poetry 来管理虚拟环境。此外,如果有另一个构建系统可以使这变得更容易,我很乐意使用它。
\n谢谢。
\n编辑:这是该文件的简化版本build.py(完整存储库位于https://github.com/Aspect1103/Hades/tree/ Generation- rust ):
project/\n\xe2\x94\x9c\xe2\x94\x80 cpp_src/\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 src/\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 cpp source files\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 test/\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 cpp test files\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 CMakeLists.txt\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 …Run Code Online (Sandbox Code Playgroud) 我正在编写一个 Python Jupyter 笔记本,它对意大利语文本进行一些 NLP 处理。
我已经通过 Poetry 安装了 spaCy 3.5.3,然后尝试运行以下代码:
import spacy
load_model = spacy.load('it_core_news_sm')
Run Code Online (Sandbox Code Playgroud)
该import行按预期工作,但运行spacy.load会产生以下错误:
OSError:[E050]找不到模型“it_core_news_sm”。它似乎不是 Python 包或数据目录的有效路径。模型名称正确,如https://spacy.io/models/it所示
经过网络搜索,我发现解决方案是发出以下命令:
python3 -m spacy download it_core_news_sm
Run Code Online (Sandbox Code Playgroud)
运行此命令后,上面的代码按预期工作,但是,是否有更“犹太”的方式通过 Poetry 来执行此操作?
使用 Poetry 时,在本地开发时允许使用本地可编辑版本的包,以及在部署时在存储库中使用已发布版本的包的最佳实践是什么?
我正在开发一个项目,该项目使用自行开发的Python包和诗歌进行依赖管理。在本地开发时,我想使用带有该标志安装的本地版本的软件包,--editable以便我可以轻松进行更改。但是,当我部署项目时,我想从私人管理的存储库安装该包。
目前,我似乎可以选择其中之一。我设置了两个可选的依赖项组,private和local-private,并包含了私人存储库的补充源。我的pyproject.toml看起来像这样:
[tool.poetry.group.local-private]
optional = true
[tool.poetry.group.local-private.dependencies]
my-package = {path = "../my-package"}
[tool.poetry.group.private]
optional = true
[tool.poetry.group.private.dependencies]
my-package = {version = "^0.2.0", source = "private_repo"}
[[tool.poetry.source]]
name = "private_repo"
url = "https://myprivaterepo.com"
priority = "supplemental"
[[tool.poetry.source]]
name = "PyPI"
priority = "primary"
Run Code Online (Sandbox Code Playgroud)
然而,似乎因为这些包共享相同的名称,所以它们在poetry.lock文件中获得一个条目。因此,当我安装任一组时,my-package两者都是从同一源拉取的。
我知道诗歌可以解决所有依赖关系,无论它们是否属于可选组。但是有没有办法为一个包指定两个不同的源,或者我的做法完全错误吗?
编辑/解决方法:
解决方法,这并不是一个真正正确的解决方法,我最终得到的是使用 pip 单独安装本地包。所以我的pyproject.toml文件看起来像这样:
[tool.poetry.group.private]
optional = true
[tool.poetry.group.private.dependencies]
my-package = {version = "^0.2.0", source = "private_repo"}
[[tool.poetry.source]]
name …Run Code Online (Sandbox Code Playgroud) 我安装了诗歌来管理包,并通过以下简单项目进行了尝试,
.
??? myproject
??? README.rst
??? myproject
? ??? __init__.py
? ??? main.py
??? myproject.egg-info
? ??? PKG-INFO
? ??? SOURCES.txt
? ??? dependency_links.txt
? ??? requires.txt
? ??? top_level.txt
??? poetry.lock
??? pyproject.toml
??? tests
??? __init__.py
??? test_myproject.py
Run Code Online (Sandbox Code Playgroud)
运行main.py我试过
$ poetry run myproject/main.py
Run Code Online (Sandbox Code Playgroud)
但我有一个错误,它说,
[PermissionError]
[Errno 13] Permission denied
Run Code Online (Sandbox Code Playgroud)
为了运行我的代码,我尝试了另一种方式。
$ poetry shell
(myproject-x8XipcUE-py3.7)$ python myproject/main.py
Run Code Online (Sandbox Code Playgroud)
我没有错误...
我的poetry run命令有什么问题?
尝试将 Poetry 包发布到 AWS CodeArtifact。它支持pipwhich 应该表明它也支持poetry,因为poetry可以上传到 PyPi 服务器。
我已经像这样配置了域:
export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain XXXX --domain-owner XXXXXXXXXXXX --query authorizationToken --output text`
poetry config repositories.the_aws_repo https://aws:$CODEARTIFACT_AUTH_TOKEN@XXXX-XXXXXXXXXXXX.d.codeartifact.eu-central-1.amazonaws.com/pypi/XXXX/simple/
poetry config pypi-token.the_aws_repo $CODEARTIFACT_AUTH_TOKEN
Run Code Online (Sandbox Code Playgroud)
但是我在尝试发布包时收到 404:
? poetry publish --repository the_aws_repo -vvv
No suitable keyring backend found
No suitable keyring backends were found
Using a plaintext file to store and retrieve credentials
Publishing xxx (0.1.5) to the_aws_repo
- Uploading xxx-0.1.5-py3-none-any.whl 100%
Stack trace:
7 ~/.poetry/lib/poetry/_vendor/py3.8/clikit/console_application.py:131 in run
129? parsed_args …Run Code Online (Sandbox Code Playgroud) python pip amazon-web-services python-poetry aws-codeartifact
python-poetry ×10
python ×8
pip ×2
c++ ×1
commitizen ×1
nlp ×1
pypandoc ×1
pyspark ×1
setuptools ×1
spacy ×1
ssl ×1