mik*_*e_b 14 python python-poetry
我有一个包配置为在容器构建期间使用诗歌进行构建/安装。我不明白为什么poetry install说它已经安装了我的软件包,但没有找到它。不过,poetry build后面跟着一个pip install轮子效果很好。如果包名称与根文件夹的文件夹名称相同,是否需要指定子包,或者如何让诗歌使用安装完整的包poetry install?我尝试了对pyproject.toml文件的各种调整,包括设置packages。
文件结构如下所示:
\n.\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 my_pkg\n \xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Dockerfile\n \xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 pyproject.toml\n \xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 my_pkg\n \xc2\xa0\xc2\xa0 \xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n \xc2\xa0\xc2\xa0 \xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 app.py\n\nRun Code Online (Sandbox Code Playgroud)\n该pyproject.toml文件如下所示:
[tool.poetry]\nname = "my_pkg"\nversion = "0.1.0"\ndescription = "My Package"\n\n[tool.poetry.dependencies]\npython = ">=3.8,<3.11"\n...\n\n[build-system]\nrequires = ["poetry-core>=1.0.0"]\nbuild-backend = "poetry.core.masonry.api"\nRun Code Online (Sandbox Code Playgroud)\n问题是运行后未安装该软件包poetry install。
% poetry install\nInstalling dependencies from lock file\n\nPackage operations: 70 installs, 4 updates, 0 removals\n\n \xe2\x80\xa2 Installing pyasn1 (0.4.8)\n \xe2\x80\xa2 Installing cachetools (4.2.4)\n \xe2\x80\xa2 Updating charset-normalizer (2.0.9 -> 2.0.8)\n \xe2\x80\xa2 Installing frozenlist (1.2.0)\n \xe2\x80\xa2 Installing multidict (5.2.0)\n...\n\n\nInstalling the current project: my_pkg (0.1.0)\n\nRun Code Online (Sandbox Code Playgroud)\n这会导致找不到包:
\n$ python\nPython 3.9.9 (main, Dec 3 2021, 01:42:21) \n[GCC 8.3.0] on linux\nType "help", "copyright", "credits" or "license" for more information.\n>>> import my_pkg\nTraceback (most recent call last):\n File "<stdin>", line 1, in <module>\nModuleNotFoundError: No module named 'my_pkg'\nRun Code Online (Sandbox Code Playgroud)\n如果我尝试查找实际文件,我找不到它们,但pip认为该包已安装。
$ find /usr/local -name my_pkg\\*\n/usr/local/lib/python3.9/site-packages/my_pkg.pth\n/usr/local/lib/python3.9/site-packages/my_pkg-0.1.0.dist-info\n$ ls -la /usr/local/lib/python3.9/site-packages/my_pkg-0.1.0.dist-info\ntotal 32\ndrwxr-xr-x 2 root root 4096 Dec 8 15:32 .\ndrwxr-xr-x 1 root root 12288 Dec 8 15:32 ..\n-rw-r--r-- 1 root root 6 Dec 8 15:32 INSTALLER\n-rw-r--r-- 1 root root 1535 Dec 8 15:32 METADATA\n-rw-r--r-- 1 root root 454 Dec 8 15:32 RECORD\n$ cat /usr/local/lib/python3.9/site-packages/my_pkg.pth \n/app/my_pkg\n$ pip freeze | grep my_pkg\nmy_pkg==0.1.0\nRun Code Online (Sandbox Code Playgroud)\n在这里,/app/my_pkg似乎是执行 时代码所在的临时路径poetry install,但这不会保留在生成的容器中。
但是,使用时poetry build && pip install dist/my_pkg*.whl,似乎包含了正确的包。所有文件也.py显示在下面。/usr/local/lib/python3.9/site-packages/my_pkg/
Building my_pkg (0.1.0)\n - Building sdist\n - Built my_pkg-0.1.0.tar.gz\n - Building wheel\n - Built my_pkg-0.1.0-py3-none-any.whl\nProcessing ./dist/my_pkg-0.1.0-py3-none-any.whl\n...\nRun Code Online (Sandbox Code Playgroud)\n$ python\nPython 3.9.9 (main, Dec 3 2021, 01:42:21) \n[GCC 8.3.0] on linux\nType "help", "copyright", "credits" or "license" for more information.\n>>> import my_pkg\n>>> \nRun Code Online (Sandbox Code Playgroud)\n
如果出于某种原因您确实需要诗歌在安装软件包时不创建虚拟环境,您可以添加以下内容:
poetry config virtualenvs.create false
poetry install
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33946 次 |
| 最近记录: |