使用 Python 的诗歌将我的包的最新版本从工作目录安装到我的本地环境中

Install the latest version of my package from working directory into my local environment using Python's poetry

能够构建最新版本的包并将其安装到本地环境中对于开发工作流程非常有用。然后,您可以通过将这个最新版本导入 Python shell 或 Jupyter notebook 来交互式地验证和调试。问题是我最近采用了诗歌,现在不知道该怎么做。所以...

如何使用 Poetry 从当前工作目录将最新版本的包安装到我的本地环境中?

setuptools

继续

以前,我总是使用 setuptools,而且效果很好。我会在我的存储库的根目录中放置一个 setup.py 文件,为项目创建一个虚拟环境(假设使用 conda),然后执行...

pip install -e .

从这里,我可以启动一个 python shell,甚至配置一个 jupyter 内核来使用这个虚拟环境,而且 我总是拥有最新版本我的包裹与 .

互动

现在 setuptools 有其局限性,我们已经转向 Poetry 以更严格地控​​制依赖关系并处理更复杂的构建需求等。

poetry

的问题

如果您查找 poetry 中的 pip install -e . 等价物,您会发现 this issue。看起来 poetry 的创建者认为像这样直接从源安装是一种 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(不是很透明)可以代表您创建和管理自己的虚拟环境。我想也许这不起作用的原因是因为我需要 inside 这个环境(而我只在 my conda环境,而 poetry 正在它管理的虚拟环境中安装我的软件包的 0.4.8 版本。

我尝试了 shellrun 来测试。我得到了相同的结果。

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.

下面是我如何完成这项工作的。 很有帮助!

1。删除 conda 作为默认环境管理器。

这涉及从 ~/.bash_profile 中删除 conda base activate

现在打开一个新的 shell 并确认没有 conda 环境前缀,例如(base) ... $.

2。使用 Homebrew 安装 pyenv

自从我与 Homebrew 互动以来,已经有一段时间了,OS 一两次升级。需要做一些家务。

brew cleanup # This made it so that brew update didn't take forever
brew update
brew upgrade
brew cleanup

然后...

brew install pyenv

3。安装 Python 个版本

假设你 need/want Python 3.

pyenv install 3.8.5

4。为您的项目设置本地 Python 版本

cd your/project/root/
pyenv local 3.8.5

5。安装 poetry

参见 here

6.使用它

现在安装并使用shell。检查版本 -> 嘿它有效!

cd your/project/root
poetry install
poetry shell
my_package --version  # Package has a CLI.