使用 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
版本。
我尝试了 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
.
下面是我如何完成这项工作的。 很有帮助!
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.
能够构建最新版本的包并将其安装到本地环境中对于开发工作流程非常有用。然后,您可以通过将这个最新版本导入 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
版本。
我尝试了 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
.
下面是我如何完成这项工作的。
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.