当前位置: 首页 > 知识库问答 >
问题:

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

郏瀚
2023-03-14

对于开发工作流来说,能够在本地环境中构建和安装最新版本的包是非常有用的。然后,您可以通过将此最新版本导入Pythonshell或Jupyter笔记本,以交互方式进行验证和调试。问题是我最近接受了诗歌,现在不知道该怎么做。所以

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

以前,我总是使用setuptools,它工作得很好。我会在存储库的根目录中放一个setup.py文件,为项目创建一个虚拟环境(比方说使用conda),然后…

pip install -e .

从这里开始,我可以启动一个python shell,甚至配置一个jupyter内核来使用这个虚拟环境,我总是可以使用最新版本的包进行交互。

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

如果你查一下诗歌中的pip install -e .等价物是什么,你会发现这个问题。看起来诗歌的创作者认为直接从源代码安装是一个黑客攻击,并且没有兴趣支持它。(顺便说一句:我尝试过诗歌构建,然后像他建议的那样拉出 setup.py 文件,但它不起作用)

直接链接到源代码不是必需的,我愿意运行安装命令来获取最新版本的软件包。当我用诗歌来做这件事时,它似乎奏效了。

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-软件包)安装的软件包的最后一个版本 - 而不是我的工作目录中的内容。

python
...
>>> import my_package
>>> my_package.__version__
'0.4.7`

现在,即使我使用诗歌,我也使用conda环境为我的项目指定Python版本,然后从里面安装和使用诗歌

source activate my-package
(my-package) ... $ poetry update

我还知道< code > poems (不太透明)可以代表你创建和管理自己的虚拟环境。我想这不起作用的原因可能是因为我需要在这个环境中(而我只在我的< code>conda环境中,而< code > poem 正在它管理的虚拟环境中安装我的包的< code>0.4.8版本)。

我尝试了 shell运行 来测试一下。我得到同样的结果。

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`

什么给你?

共有1个答案

彭正谊
2023-03-14

我解决这个问题的方法是:我停止使用conda来管理涉及诗歌的项目的Python版本,而是使用pyenv

下面是我是如何做到这一点的。这很有帮助!

这涉及从~/.bash_profile中删除conda碱基激活

现在打开一个新的shell并验证没有< code>conda环境前缀,例如< code>(base)...$。

已经有一段时间了,自从我与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

请参见此处。

现在安装并使用shell。检查版本-

cd your/project/root
poetry install
poetry shell
my_package --version  # Package has a CLI.
 类似资料:
  • 我必须下载一个git python回购和安装,因为pypi版本不更新。 通常我会这样做: 现在,我已将回购克隆到以下文件夹中: /opt/mypackage 那么,我如何运行来安装下面的不是使用pypi版本而是本地版本呢? 有可用的pip标志,我不知道如何实现:

  • 我从Git存储库下载了一个简单的项目,并在Intellij中打开了它。几个导入语句以红色突出显示,表示“无法解析符号”无法解析的包有:zaxxer、springframework。 通常在Perl或Python中,我会启动像CPAN这样的依赖关系管理器并简单地安装它们,但我的理解是,在Java中实际上没有这样的东西,依赖关系是在某种程度上按项目来解决的。 我安装了Maven 3,我的项目有一个po

  • 我在我的旧笔记本电脑上设置了一个项目,在我的本地安装了Postgresql,并使用诗歌作为包管理器。现在我搬进了另一台笔记本电脑。在这台笔记本电脑上,我想使用Docker的Postgres,所以我没有安装它。但是当我运行从文件设置项目时,它无法安装带有错误: 正如我搜索的那样,它需要在本地安装Postgres。那么,如何使用Docker的Postgres从锁文件安装Psycopg2?

  • 好的,所以任何回答的人请注意,我是一个完整的初学者,所有这些。但是我已经安装了jdk1.8.0,因为这是Android Studio的最新版本所需要的,但是当我打开Android Studio时,它说我仍然需要改变它。所以经过大量的研究,我做了一个新的Java_Home变量,并将目录设置为我的jdk文件所在的位置。然后我进入android Studio文件,项目结构,然后改变了jdk目录。然而,当

  • 我试图编译FFMPEG与我的Android应用程序。我已经查看了:https://github.com/halfninja/android-ffmpeg-x264,这几乎是我想要的,但我需要FFMPEG的更新版本(所以我尝试使用最新的2.2)。 我正在使用那里的大部分脚本,但问题是在运行compile_make_everything.sh之后,我试图运行ndk-build,但我得到了错误(基本上它

  • 问题内容: 我的雇主有一个专用模块1,我们用于内部单元/系统测试;但是,该模块的作者不再在这里工作,并且要求我使用它来测试某些设备。 问题在于,该版本需要(v8.2.0)的较旧版本,并且需要导入33个不同的文件中。我试过在v11.0.0下运行单元测试,甚至看不到TCP SYN数据包2。不幸的是,我已经在我的实验室linux服务器上安装了Twisted v11.0.0 ,并且我有依赖于它的代码。 我