对于开发工作流程而言,能够将软件包的最新版本构建并安装到本地环境中非常有用。然后,您可以通过将此最新版本导入Python Shell或Jupyter Notebook中进行交互式验证和调试。问题是我最近采用了《诗歌》,现在不知道该怎么做。所以...
如何使用Poetry将最新版本的软件包从当前工作目录安装到本地环境中?
setuptools
过去,我曾经经常使用setuptools
它,效果很好。我将setup.py
文件放在存储库的根目录中,conda
为项目创建一个虚拟环境(假设使用),然后执行...
pip install -e .
从这里,我可以启动python shell,甚至配置jupyter内核以使用此虚拟环境,并且我将始终拥有与之交互的最新版本的软件包。
现在setuptools
有了局限性,从那以后,我们开始研究诗歌,以更加严格地控制依赖关系并处理更复杂的构建需求等。
poetry
如果您查找pip install -e .
等效项,poetry
将会发现此问题。看起来像poetry
thinks的创建者那样直接从源代码安装是一个hack,对支持它毫无兴趣。(顺便说一句:我已经尝试过poetry build
,然后setup.py
像他建议的那样拉出文件,它不起作用)
无需直接链接到源,我愿意运行安装命令来获取软件包的最新版本。当我使用时poetry
,它似乎可以工作。
cd root/of/my/project
poetry install
Installing dependencies from lock file
No dependencies to install or update
Installing the current project: my-project (0.4.8) <-- this is the latest version according to the source code in the working directory
问题是,如果我打开Python Shell并尝试导入包,例如,它链接到从远程工件存储库(通过pip install my-package
)安装的包的最新版本,而不是工作目录中的最新版本。
python
...
>>> import my_package
>>> my_package.__version__
'0.4.7`
现在,即使我用poetry
我使用conda
环境来指定Python版本为我的项目,然后安装和使用,poetry
从内部的。
source activate my-package
(my-package) ... $ poetry update
我也知道poetry
(不是很透明)可以代表您创建和管理自己的虚拟环境。我认为这可能不起作用的原因是因为我需要在此环境中(而我只在我的 conda
环境中,而我正在管理的虚拟环境中poetry
安装0.4.8
软件包的版本)。
我尝试了两者shell
并run
进行了测试。我得到相同的结果。
poetry shell
Virtual environment already activated: /Users/U6020643/.conda/envs/my-package
Python 3.8.5
...
>>> import my_package
>>> my_package.__version__
'0.4.7`
是什么赋予了?
解决此问题的方式:我停止使用conda
来管理涉及poetry
并改为使用的项目的Python版本pyenv
。
以下是我的工作方式。这非常有帮助!
conda
为默认环境管理器。这涉及conda base activate
从中删除~/.bash_profile
。
现在打开一个新的shell并确认没有conda
环境前缀,例如(base) ... $
。
pyenv
使用自制软件安装自从我与Homebrew互动以来,已经有一段时间了,并且进行了一两次操作系统升级。需要做一些家务。
brew cleanup # This made it so that brew update didn't take forever
brew update
brew upgrade
brew cleanup
然后...
brew install pyenv
假设您需要/想要Python 3。
pyenv install 3.8.5
cd your/project/root/
pyenv local 3.8.5
poetry
看这里。
现在安装并使用外壳。检查版本->嘿,它起作用了!
cd your/project/root
poetry install
poetry shell
my_package --version # Package has a CLI.
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句