我对Docker和容器化相当陌生。我想减少my_proj生产中 docker 容器的大小。
我更喜欢通过Poetry.
如何在 a 中指定仅使用 CPU ?PyTorchDockerfile
要通过以下方式做到这一点。bash终端,它将是:
poetry add pytorch-cpu torchvision-cpu -c pytorch
Run Code Online (Sandbox Code Playgroud)
(或者conda install...)
我现有的Dockerfile:
FROM python:3.7-slim as base
RUN apt-get update -y \
&& apt-get -y --no-install-recommends install curl wget\
&& rm -rf /var/lib/apt/lists/*
ENV ROOT /home/worker/python/my_proj
WORKDIR $ROOT
ARG ATLASSIAN_TOKEN
ARG POETRY_HTTP_BASIC_AZURE_PASSWORD
ARG ACCESS_KEY
ENV AWS_ACCESS_KEY_ID=$ACCESS_KEY
ARG SECRET_KEY
ENV AWS_SECRET_ACCESS_KEY=$SECRET_KEY
ARG REPO
ENV REPO_URL=$REPO
ENV PYPIRC_PATH=$ROOT/.pypirc
ENV \
PYTHONFAULTHANDLER=1 \ …Run Code Online (Sandbox Code Playgroud) 基于诗歌文档:
同样,如果您有命令行工具,例如
pytest或black您可以使用以下命令运行它们poetry run pytest
使用黑色的建议方法是:
poetry run black myscript.py
Run Code Online (Sandbox Code Playgroud)
但是,如果我只使用,我没有注意到行为有任何差异
black myscript.py
Run Code Online (Sandbox Code Playgroud)
这两种方法有什么区别?
如何升级到最新版本?
\n规格:
\n当前版本:
\nme@PF2DCSXD:/mnt/c/Users/user/Documents/GitHub/workers-python/workers/composite_key/compositekey/tests$ python3 --version\nPython 3.8.10\nRun Code Online (Sandbox Code Playgroud)\n尝试更新 | poetry self update:
me@PF2DCSXD:/mnt/c/Users/user/Documents/GitHub/workers-python/workers/composite_key/compositekey/tests$ poetry self update\n\n RuntimeError\n\n Poetry was not installed with the recommended installer. Cannot update automatically.\n\n at ~/.local/lib/python3.8/site-packages/poetry/console/commands/self/update.py:389 in _check_recommended_installation\n 385\xe2\x94\x82 current = Path(__file__)\n 386\xe2\x94\x82 try:\n 387\xe2\x94\x82 current.relative_to(self.home)\n 388\xe2\x94\x82 except ValueError:\n \xe2\x86\x92 389\xe2\x94\x82 raise RuntimeError(\n 390\xe2\x94\x82 "Poetry was not installed with the recommended installer. "\n 391\xe2\x94\x82 "Cannot update automatically."\n …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 SSH 添加从 git 到诗歌的依赖性(我对 HTTPS 版本不感兴趣)。poetry add但无论我使用...,我都会收到错误
poetry add git+ssh://git@github.com:myorg/myproj.git\nRun Code Online (Sandbox Code Playgroud)\n...或者如果我手动添加...
\n# Entry in pyproject.toml\nmyproj = { git = "git@github.com:myorg/myproj.git" }\n# cmd\npoetry install\nRun Code Online (Sandbox Code Playgroud)\n在这两种情况下,我都会得到以下输出:
\nStack trace:\n\n 11 ~\\AppData\\Roaming\\pypoetry\\venv\\lib\\site-packages\\clikit\\console_application.py:131 in run\n status_code = command.handle(parsed_args, io)\n\n 10 ~\\AppData\\Roaming\\pypoetry\\venv\\lib\\site-packages\\clikit\\api\\command\\command.py:120 in handle\n status_code = self._do_handle(args, io)\n\n 9 ~\\AppData\\Roaming\\pypoetry\\venv\\lib\\site-packages\\clikit\\api\\command\\command.py:171 in _do_handle\n return getattr(handler, handler_method)(args, io, self)\n\n 8 ~\\AppData\\Roaming\\pypoetry\\venv\\lib\\site-packages\\cleo\\commands\\command.py:92 in wrap_handle\n return self.handle()\n\n 7 ~\\AppData\\Roaming\\pypoetry\\venv\\lib\\site-packages\\poetry\\console\\commands\\add.py:106 in handle\n requirements = self._determine_requirements(\n\n 6 ~\\AppData\\Roaming\\pypoetry\\venv\\lib\\site-packages\\poetry\\console\\commands\\init.py:320 in _determine_requirements\n requires = self._parse_requirements(requires)\n\n 5 …Run Code Online (Sandbox Code Playgroud) 当尝试通过 Poetry 安装“kaleido”时,我收到以下错误消息:
\n~ poetry add kaleido\nUsing version ^0.2.1 for kaleido\n\nUpdating dependencies\nResolving dependencies... (3.1s)\n\nPackage operations: 1 install, 0 updates, 0 removals\n\n \xe2\x80\xa2 Installing kaleido (0.2.1.post1): Failed\n\n RuntimeError\n\n Unable to find installation candidates for kaleido (0.2.1.post1)\n\n at ~/.poetry/lib/poetry/installation/chooser.py:72 in choose_for\n 68\xe2\x94\x82\n 69\xe2\x94\x82 links.append(link)\n 70\xe2\x94\x82\n 71\xe2\x94\x82 if not links:\n \xe2\x86\x92 72\xe2\x94\x82 raise RuntimeError(\n 73\xe2\x94\x82 "Unable to find installation candidates for {}".format(package)\n 74\xe2\x94\x82 )\n 75\xe2\x94\x82\n 76\xe2\x94\x82 # Get the best link\nRun Code Online (Sandbox Code Playgroud)\n然而,“kaleido”出现在诗歌.lock 文件中:
\n[[package]]\nname = "kaleido"\nversion = "0.2.1.post1"\ndescription = "Static …Run Code Online (Sandbox Code Playgroud) 我正在使用 维护两个存储库poetry,我们称它们repo_main为 和repo_dependency。它们都使用python 3.8并具有mypy( v0.942) 类型提示,并且顾名思义,repo_main依赖于repo_dependency。现在,当我mypy在 上运行时repo_main,类型提示repo_dependency实际上被忽略并被有效地视为Anys。然后我尝试将py.typed文件添加到每个子包中,repo_dependency但没有结果,类型仍然被忽略。的结构repo_dependency看起来有点像这样:
repo_dependency/
- repo_dependency/
- package1/
- __init__.py
- py.typed
- stuff.py
- package2/
- __init__.py
- py.typed
- stuff.py
- __init__.py
- py.typed
- other_non_distributed_things/
Run Code Online (Sandbox Code Playgroud)
知道我可能做错了什么吗?
当我跑步时poetry show- 我的大部分包裹都是蓝色的,但也有一些是红色的?这两种颜色代表什么意思?
我认为红色意味着该包不是@latest?
如何让 Poetrydev仅更新依赖项latest?
我原来有:
[tool.poetry.dev-dependencies]
pytest = "^4.6"
Run Code Online (Sandbox Code Playgroud)
但我想要:
[tool.poetry.dev-dependencies]
pytest = "^6.0"
Run Code Online (Sandbox Code Playgroud)
我通过手动编辑文件来实现它pyproject.toml。
当我运行poetry update它时(出色地)碰撞了我所有正常的(非开发)依赖项。
我有一个从 Windows 机器到另一台机器的 SSH 连接,然后尝试进行诗歌安装。
\n我的问题是:\n通过 ssh执行诗歌安装时出现此错误:
\n[WinError 1312] A specified logon session does not exist. It may already have been terminated.\nRun Code Online (Sandbox Code Playgroud)\n当我在目标机器上本地执行该命令时,该命令可以完美运行,但通过 ssh 连接时会失败。
\n我怎样才能摆脱/修复[WinError 1312]?
\n我看到另一个用户最近发布了同样的问题,但将其删除。
\n我已经看到了一些有关 MachineKeys 的线索,但真的不知道如何继续。任何建议将受到高度赞赏。
\n蟒蛇:3.10.8
\n诗歌:1.2.1
\nInstalling dependencies from lock file\n\nPackage operations: 5 installs, 0 updates, 0 removals\n\n \xe2\x80\xa2 Installing install-requires (0.3.0)\n\n OSError\n\n [WinError 1312] A specified logon session does not exist. It may already have been terminated.\n\n at ~\\AppData\\Roaming\\pypoetry\\venv\\lib\\site-packages\\win32ctypes\\core\\ctypes\\_util.py:53 in …Run Code Online (Sandbox Code Playgroud) 我尝试将我的诗歌从 1.1.x 版本升级到 1.3,但官方手册(https://python-poetry.org/docs/)建议我手动删除旧版本。不幸的是,我可能删除了错误的文件,因为安装 1.3 版本后,我仍然收到错误,这些错误似乎与旧诗歌相冲突。 \n我试图找到我帐户中的所有文件(它是远程计算机,所以我不想影响其他人)以某种方式与诗歌(与find /home/username -name *poetry*)有联系并且(卸载诗歌1.3后)删除了它们。然后我重新安装了诗歌 1.3,但仍然无法正常工作。\n还尝试删除我的整个存储库并再次克隆它,但仍然存在同样的问题。我想我已经很生气了,但希望有某种方法可以进行硬重置。有什么办法可以摆脱这个吗?
这是我的错误消息的开头:
\n\nPackage operations: 28 installs, 0 updates, 0 removals\n\n \xe2\x80\xa2 Installing certifi (2021.10.8)\n \xe2\x80\xa2 Installing charset-normalizer (2.0.12)\n \xe2\x80\xa2 Installing idna (3.3)\n \xe2\x80\xa2 Installing six (1.16.0)\n \xe2\x80\xa2 Installing typing-extensions (4.2.0)\n \xe2\x80\xa2 Installing urllib3 (1.26.9)\n\n DBusErrorResponse\n\n [org.freedesktop.DBus.Error.UnknownMethod] (\'No such interface \xe2\x80\x9corg.freedesktop.DBus.Properties\xe2\x80\x9d on object at path /org/freedesktop/secrets/collection/login\',)\n\n at ~/.local/share/pypoetry/venv/lib/python3.10/site-packages/secretstorage/util.py:48 in send_and_get_reply\n 44\xe2\x94\x82 def send_and_get_reply(self, msg: Message) -> Any:\n 45\xe2\x94\x82 try:\n 46\xe2\x94\x82 resp_msg: Message = self._connection.send_and_get_reply(msg)\n 47\xe2\x94\x82 …Run Code Online (Sandbox Code Playgroud) python-poetry ×10
python ×8
python-3.x ×4
bash ×1
docker ×1
dockerfile ×1
git ×1
mypy ×1
python-black ×1
pytorch ×1
ssh ×1
types ×1
windows ×1