如何将 python 模块从源代码安装到虚拟环境中

Posted

技术标签:

【中文标题】如何将 python 模块从源代码安装到虚拟环境中【英文标题】:How to install python modules from sources onto a virtual environment 【发布时间】:2018-11-01 19:01:23 【问题描述】:

据我了解,您使用 pip install -e /my_module 从源安装模块

当我这样做时 pip show -f my_module | grep 位置 将 ~/my_module 作为位置而不是我的虚拟环境的站点包

我在安装模块时激活了我的虚拟环境。我还尝试将我的模块文件夹移动到我的虚拟环境的站点包中,但它将它安装在站点包/my_module 中,而不仅仅是站点包。

我这样做是为了编辑现有模块以处理我的数据形状。

从源代码安装模块到虚拟环境的正确方法是什么?

【问题讨论】:

【参考方案1】:

据我了解,您使用 pip install -e /my_module 从源安装模块

不,不完全是。 pip install -e 以“可编辑”安装,即开发模式。而不是将安装的文件复制到site-packages/ 目录pip 配置site-packages/ 和您的源,以便python 从您的源目录导入您的模块。这样您就可以编辑模块,并且更改立即可供 python 使用。如果没有-e,pip 会以通常的方式安装包——将它复制到site-packages/,所以如果你编辑你的代码,你需要重新安装。

当我这样做时 pip show -f my_module | grep Location 将 ~/my_module 作为位置,而不是我的虚拟环境的站点包

是的,pip install -e 就是这样工作的。如果您希望将代码复制到虚拟环境的site-packages/,请不要使用-e

我这样做是为了编辑现有模块以处理我的数据形状。

那么你当然需要-e 以便你的模块可以从源目录中导入。

从源代码安装模块到虚拟环境的正确方法是什么?

pip installpip install -e 都是正确的,它们适用于不同的用例。

【讨论】:

感谢您的回复!删除 -e 确实使它安装在正确的位置。现在如果我做 pip show -f my_module | grep Location 与我的模块或现有的工作模块,它们都给出相同的位置。问题是当我运行我的 python 文件时我的模块仍然没有被导入!我认为问题在于它没有安装在正确的位置,但它一定是不同的东西。关于为什么模块没有被导入的任何想法? 每次编辑源时别忘了重新安装。 抱歉,我在询问后续问题之前不小心发表了评论:问题是当我运行我的 python 文件时,我的模块仍然没有被导入!我认为问题在于它没有安装在正确的位置,但它一定是不同的东西。关于为什么模块没有被导入的任何想法? 你最好问一个更详细的问题——包安装在哪里,有什么文件,错误是什么,which pipwhich pythonpip --versionpython --version的结果. 好的,我发现了一个问题,但没有找到解决方案。出于某种原因 virtualenv --system-site-packages ~/venv 安装 python 2.6 而不是 3.6。我解决了这个问题,现在一切都在 python 3 中,但它仍然无法找到我的模块。我已经激活了 venv,当我使用 ~/venv/bin/pip freeze --local 时,我的模块出现了。 which python 和 which pip 都指向 ~/venv/bin 我的错误是 ModuleNotFoundError: No module named 'my_module.class_file'; 'my_module' 不是一个包。我正在从下载文件夹运行我的 python 代码。在提出新问题之前,我会先调查一下【参考方案2】:

假设你的库中有一个 setup.py 设置文件

第 1 步:激活您的虚拟环境。

第 2 步:导航到您的库源文件夹。

第 3 步:通常使用“python setup.py install”安装库。

【讨论】:

以上是关于如何将 python 模块从源代码安装到虚拟环境中的主要内容,如果未能解决你的问题,请参考以下文章

从入门到自闭之Python--虚拟环境如何安装

python 虚拟环境与包安装

如何将一个模块从'base'环境导入到anaconda中的'tf'环境?

ubuntu 下创建python环境

Python函数与模块(18)安装虚拟环境

ubuntu环境下python虚拟环境的安装